France will face England or Croatia in the World Cup final after edging past European neighbours Belgium in the semi-final in St Petersburg.
Defender Samuel Umtiti scored the winning goal for the 1998 champions in the second half with a towering header from Antoine Griezmann’s corner.
Didier Deschamps’ side were on the back foot for large periods of the game, but emerged victorious to reach their third final, having been beaten by Italy on penalties in 2006.
Belgium came through the quarter-finals by impressively beating Brazil, but they were unable to find the equaliser, as Axel Witsel’s powerful, long-range drive was pushed away by Hugo Lloris, who also brilliantly kept out Toby Alderweireld’s turn and shot.
At the final whistle, the France substitutes ran on the pitch to celebrate with the players, while manager Deschamps was mobbed by his staff before dancing around in a circle.
England play Croatia at the Luzhniki Stadium in Moscow in the second semi-final on Wednesday (kick-off 19:00 BST) and the final takes places at the same venue on Sunday (16:00 BST).
Twenty years ago, France won the World Cup for the first and only time in their history at home in Paris with a 3-0 win over Brazil.
That team was captained by Deschamps, who is now aiming to emulate Brazilian Mario Zagallo and Germany’s Franz Beckenbauer by winning the competition as both a player and manager.
Deschamps was a holding midfielder in his day and his France side have come to characterise his playing style of functionality over flair by adopting a conservative game.
Belgium had 64% possession in the match but France kept their shape, played on the counter-attack and constantly looked to forward Kylian Mbappe, who was a threat throughout with his darting runs and trickery with the ball.
The teenager, who announced himself on the global stage by scoring twice against Argentina in the last 16, played a sublime flick to put Olivier Giroud in on goal, but the Chelsea man saw his shot blocked from close range.
Although Giroud has now had 13 shots in the tournament without finding the target, he is likely to keep his place in the starting XI for the final.
Deschamps has been questioned for continuing to deploy Giroud up front in his side and has been asked why a place cannot be found for other attacking talents such as Ousmane Dembele or Thomas Lemar.
But he has answered the critics with a run to a second consecutive major tournament final after Euro 2016, when they were beaten in extra-time by Portugal.
Once France went ahead on 50 minutes they rarely looked like conceding and Belgium went out with a bit of a whimper.
Golden generation unable to reach in finals
Ranked among one of the pre-tournament favourites, there was optimism that Belgium’s ‘golden generation’ of players containing skipper Eden Hazard, Kevin de Bruyne and Romelu Lukaku could finally deliver silverware for their country.
But the win in the previous round against five-time winners Brazil proved to be their peak, and they suffered heartbreak in a major tournament once more.
The Red Devils lost in the quarter-final of both the previous World Cup and the European Championship and their second World Cup semi-final appearance ended in defeat, just like in 1986 against a Diego Maradona-inspired Argentina.
The team’s 24-match unbeaten run stretching back to September 2016 also came to an end, as manager Roberto Martinez suffered a first loss in a competitive game.
Ten of the 11 starters were Premier League-based and one of those – striker Lukaku of Manchester United, who was excellent against Brazil, was left stifled by France’s excellent centre-back pairing of Umtiti and Raphael Varane. Lukaku had just 22 touches on the ball in the whole match – the least of any player who started.
Manchester City’s De Bruyne was unable to dictate the game and although skipper Hazard started brightly, fizzing a low shot narrowly wide and another deflecting over, he too drifted out of the game.
Belgium’s only consolation is that they still have one game left to play in the tournament – Saturday’s third/fourth place play-off against the loser from the England v Croatia encounter.