France ended Morocco’s World Cup dream as goals from Theo Hernandez and Randal Kolo Muani gave the holders a 2-0 win in their semi-final clash.
This will set up a showdown on Sunday with Lionel Messi’s Argentina.
France started with a bang when Hernandez scored inside five minutes at Al Bayt Stadium.
Hernandez netted an acrobatic volley at the back post after Mbappe’s shot was deflected.
Morocco’s fate was sealed when they conceded a late second as substitute Kolo Muani scored moments after coming on.
France, who have reached a fourth World Cup final in seven editions, are hoping to become the first team since Brazil 60 years ago to retain the trophy.
The final will be billed as a showdown between Messi and his Paris Saint-Germain teammate Kylian Mbappe.
The Moroccan side will now face Croatia in Saturday’s third-place play-off.
“We gave our all, that is the most important thing. The boys fought right to the end,” said coach Walid Regragui.
“We wanted to win the match but we came up against a strong team who know what they are doing and who wait for you to make a mistake, which we did at the start of the match.”
Morocco had reached the semi-finals after beating Belgium in the group stage and then knocking out Spain and Portugal.
But in the semi-final, Regragui’s plans were hindered by a series of injuries.
Having missed the quarter-final, centre-back Nayef Aguerd was recalled only to withdraw at the last minute, with Achraf Dari stepping in.
Fellow defender and captain Romain Saiss had to get off after just 21 minutes.
How France scored
France’s opener was the result of a chaotic phase of play where Antoine Griezmann seized upon a slip from Jawad El Yamiq and cut the ball back to Mbappe.
The Paris Saint-Germain star had his first effort blocked and a second looped up off Oliver Giroud to Hernandez as he found an acrobatic finish.
When Saiss let a simple forward ball bounce over his head, Olivier Giroud broke away but his shot hit the post.
This was just before Hugo Lloris had produced a save at full stretch against a shot by Azzedine Ounahi.
El Yamiq almost atoned for his opening goal error with an overhead kick that thumped the base of the post.
Mbappe tried to get France back on the front foot after the restart but it was another winger, Chelsea’s Hakim Ziyech, who was the outstanding attacker of the half, orchestrating several intricate attacks down the right flank.
Ibrahima Konate, only playing after Dayot Upemacano was ruled out through illness, made last-ditch clearances.
France finally heaved a sigh of relief when Mbappe’s twinkling feet dribbled past two players and created a simple assist for Kolo Muani, who had only been on the field for 44 seconds.
The Atlas Lions meanwhile continued to lose players – Bayern Munich left-back Noussair Mazraoui was forced to withdraw at half-time.
1. Lloris (GK) — 5. Kounde, 4. Varane, 24. Konate, 22. T. Hernandez — 8. Tchouameni, 13. Fofana — 11. Dembele, 7. Griezmann, 10. Mbappe — 9. Giroud
1. Bono (GK) — 2. Hakimi, 18. El Yamiq, 20. Dari, 6. Saiss, 3. Mazraoui — 7. Ziyech, 8. Ounahi, 4. Amrabat, 17. Boufal —19. En-Nesyri