Samuel Umtiti was the unlikely hero as France reached the World Cup final for the third time in 20 years courtesy of a 1-0 win over Belgium in St Petersburg on Tuesday.
Defender Umtiti headed home a corner from Antoine Griezmann in the 51st minute to settle the all-European tie, booking Les Bleus a trip to Moscow and a clash against either Croatia or England.
Goalkeepers Hugo Lloris and Thibaut Courtois both made smart saves to make sure an intriguing game remained scoreless at the interval.
However, Umtiti popped up with the game's telling moment early in the second half, nodding the ball home to score his third international goal.
Belgium pushed hard for an equaliser but Roberto Martinez watched on as his team suffered their first defeat in 25 outings, ending their hopes of winning the tournament for the first time in history as their so-called golden generation came up short.
Beaten finalists at Euro 2016 on home soil, France will aim to go one better in Russia and emulate the successful squad of 1998 which included Didier Deschamps, who could emulate Mario Zagallo and Franz Beckenbauer by winning the World Cup as both a player and manager.
With Thomas Meunier suspended, Belgium shifted to a back four as Martinez selected Nacer Chadli on the right.
Still, the change in shape did not appear to bother the tournament's top-scorers in an absorbing first half, both teams threatening a breakthrough as they refused to be overawed by the occasion.
Eden Hazard twice went close, narrowly missing the target with a low, left-footed drive before seeing a curler with his right deflected over by the head of centre-back Raphael Varane.
Lloris' full-length dive kept out a first-time strike from Tottenham colleague Toby Alderweireld, while Courtois reacted quickly to block Benjamin Pavard's attempt from a tight angle at the other end.
While the full-back at least hit the target, Olivier Giroud failed to test Courtois when presented with a clear sight of goal by Kylian Mbappe's volleyed cross, poking his attempt well wide under pressure.
However, France needed just six minutes after the break to edge ahead.
After Vincent Kompany's block turned away Giroud's shot, Griezmann's inswinging delivery to the front post was turned in by Umtiti, who beat Marouane Fellaini to head beyond Courtois.
Martinez - who had seen his team rally from a two-goal deficit in their last-16 tie against Japan - reacted to the goal by sending on Dries Mertens in place of Mousa Dembele.
The substitute offered a threat from Belgium's right wing too, with one teasing cross from the flank seeing Fellaini narrowly miss the target with a header as he looked to make amends for his part in the opener.
Axel Witsel did test Lloris from distance but France succeeded where Brazil had failed in the last round, standing firm to stifle their neighbours in a nervy finish and book a trip to Moscow.
Full-time: France 1-0 Belgium
Les Bleus are into the World Cup final, leaving Belgium’s golden generation to compete for bronze! Umtiti’s goal from a set-piece, and France’s excellent defending, were the diffrence between the sides.
90+6 min: Pogba slips in Tolisso, who has a chance to put the icing on France’s gateau. But he’s denied by a splendid save by Courtois.
90+4 min: Varane makes yet another clearance from a Belgian cross. Then Vertonghen clunks into Mbappé to concede a daft freekick and a deserved yellow card.
90+3 min: Tremendous tackle by Kompany to dispossess Mbappé at the edge of the Belgian box.
90+2 min: Griezmann and Mbappé try to run down the clock in the Belgian corner. Mbappé lets the ball run out of play and then prevents Belgium from taking the throw-in, earning a push to the ground from Witel and a yellow from the ref.
Belgium substitution: Batshuayi on, Chadli off.
90 min: Belgium have at least six minutes to preserve their World Cup challenge ...
89 min: De Bruyne’s delivery from the freekick is good. Nzonzi gets a head to it but doesn’t clear. The ball bounces around the French box before eventually being booted away. De Bruyne picks it up and sends a beautiful pass towards Lukaku ... whom it misses by an inch! The striker would have been in.
88 min: Kanté booked for hauling down Hazard. Belgium have a freekick wide on the left ... and one last chance, perhaps?
France substitution: Tolisso on, Matuidi off. He’s had an excellent game, Matuidi, but seems to have picked up a knock. Here’s hoping it’s not serious enough to keep him out of the final, where France are surely headed ...
France substitution: Nzonzi on, Giroud off. Belgium’s chance of penetrating dwindle further ...
83 min: Mertens tries to round Hernandez and deliver a cross but the defender is wise to his game and leads him out of play.
81 min: Varane makes a super tackle on Hazard but the ball runs to Witsel, who lets fly from long range. It’s a ferocious hit but close to Lloris, who punches it away with both fists.
Belgium substitution: Carrasco on, Fellaini off. That’s a measure of how well France have coped with crosses into the box.
80 min: Brilliant run by Hazard down the left, past Pogba and into the box. He’s forced back out but then is brought down by Giroud at the edge of the box. The ref waves play on, to the disbelief of Hazard and Belgians everywhere!
80 min: Griezmann curls over a humdrum freekick from the left. Pogba sends a back-header over the bar from 12 yards.
79 min: Pogba, Matuidi and Kante are controlling midfield now, augmented by Griezmann and Giroud dropping back. Belgium’s only space is down the flanks, especially on the right.
77 min: Mertens overhits a cross from the right.
75 min: Hazard jinks past Giroud in his own half and skedaddles forward, eventually picking out Mertens on the right. His crossing options are closed down so he recycles possession. Belgium eventually work it to De Bruyne at the edge of the box. With a dextrous shuffle he makes space for a shot ... and then sends the ball skyward. Oh well.
73 min: The way France are protecting their lead is impressive. They’re extremely solid and efficient, all working hard and methodically. Belgium are struggling to find any openings and, at this point, are more likely to concede again on the counter.
71 min: Alderwerield becomes the second Belgian booked for bringing down Matuidi to abort a counter-attack.
69 min: Mertens curls over another cross from the right - he’s become the most likely source of an equaliser for Belgium. But France deal with his latest delivery well.
67 min: For the second time in a couple of minutes De Bruyne gives the ball away: his eagerness for Belgium to get back into the game had rendered his passing a tad desperate. France have been the more accomplished side since half-time. And on that note, Giroud has just tonked a shot 20 yards over the bar after a perfect tee-up by Griezmann.
65 min: Mertens cross again from the right. Fellaini beats Umtiti to it but heads a yard wide from 12 yards.
65 min: Mertens cross from the right. Lloris punches it away.
63 min: Chadli wins a corner. Then takes it. It’s awful. Cleared at the near post, it allows France to tip forward on the counter-attack. Hazard decides to curtail it by tugging back Matuidi. A deserved yellow card is shown.
61 min: Mertens’ first touch is a cross from the byline, heading away in extremis by Varane. De Bruyne tries to smash the dropping ball into the net from 16 yards but he’s under pressure and doesn’t catch his volley well.
Belgium substitution: Mertens on, Dembélé off.
59 min: France are in the groove now and beginning to torment Belgium with lordly keep-ball and the occasional sharp thrust. Martinez needs to make a change.
56 min: Mbappe zooms down the right and then feeds Matuidi, whose shot is blocked at the edge of the area. France regain possession and build anew. Then Mbappe plays in Giroud with an outrageous backheeled pass. Dembéle blocks the striker’s shot. Mbappé is on fire!
54 min: Freekick to France at the left-hand corner of the box. Griezmann clips it in. Kompany heads it away.
51 min: It should be noted that France won their corner following a sharp run by Matuidi, who fed Giroud, who did well to make room for a shot that was deflected behind for a corner. After that, it was just a question of Umtiti timing his run and jump and nodding into the net.
GOAL! France 1-0 Belgium (Umtiti 51)
Umtiti heads in at the near post from a corner by Griezmann. He outjumped Fellaini, if you don’t mind!
50 min: Ominous pressure from Belgium following a move initiated by Alderweireled, who is stepping more often into midfield. In the end Chadli’s attempted cross to Fellaini is misdirected. Chaldi’s crossing has been inadeqate all game so far.
48 min: Witsel sends a deep cross from the right towards Lukaku, who beats Varane to it but heads over rom eight yards! That was a decent chance and Lukaku should have done better.
47 min: A barnstorming run by Mbappe takes France to the edge of the Belgian area before Alderwerield stretches out a leg to nick the ball away from the lightning youngster.
46 min: The boys are back, as Dropkick Murphys famously sang, and they’re looking for a breakthrough. Neither manager has seen fit to change their lineup yet.
Half-time: France 0-0 Belgium
It’s on a knife-edge. De Bruyne and, particularly, Hazard have fizzed with menace, while France have been cautious, as expected, but threatened on the counter-attack, where their speed - especially Mbappe - could damage France at any moment.
45+1 min” De Bruyne curls in a delivery from the right. Umtiti attempts to cut it out but succeeds only in diverting it towards Lukaku, who is too surprised to be able to take full advantage. The ball bounces off the striker and dribbles wide.
45 min: There will be least one more minute before the break.
43 min: Griezmann curls the freekick into the wall. There was a touch of inevitability about that.
42 min: Pogba is pulled back by Demblé, giving France a freekick in a dangerous position. It’s about 25 yards, towards the right-hand side of the box. Courtois erects a four-man wall...
40 min: Lukaku comes deep and to the left in an attempt to get into the game. He gets the ball but winds up passing it backwards. Belgium stroke the ball around a bit before Matuidi makes another interception in midfield. He’s had a storming game so far.
38 min: Dembelé plays a slack pass straight to Kanté. France tear forward again. Mbappé sips a pass in to Pavard, who finds himself one-on-one with Courtois. He aims for the far corner but the keeper gets a crucial touch to the low shot with his foot! Corner to France.
36 min: France have got the upper hand in the last few minutes. They nearly opened up Belgium again now after Matuidi launched a counter-attack from deep in his own half. But it broke down when it came to Giroud. He has been more involved than Lukaku - who has been well guarded by Varane and Umtiti - but his touch has been off so far. If it continues like that, Mbappé should be redeployed through the middle.
34 min: Griezmann curls a splendid ball over Vertonghen and into the path off Mbappé, who calmly sidefoots it across goal to Giroud ... who provides a perfect contract to that suave buildup by falling over and donking the ball miles wide like an oaf.
33 min: Greizmann creates spaces for a shot with a dinky feint past Witsel at the left-hand corner of the Belgian box. But then he wellies his shot into the stands, where, by the way, the atmosphere has been surprisingly sedate for a World Cup semi-final.
32 min: Hazards beats three players down the left before cutting into the box ... and running the ball out of play.
31 min: Griezmann takes the freekick short to Pavard, who crosses into the area from the right. Giroud has to lean backwards and twist his neck in an inventive way to guide a header close to the target. It drops a yard wide of the post.
30 min: France enjoy a spell of possession, which ends with Vertonghen knocking over Mbappé and getting told off by the ref. France have a freekick about 35 yards out and central.
28 min: Hazard nudges the ball to De Bruyne wide on the left. De Bruyne spanks a wonderful low cross into the danger zone. Umtiti excels to sweep it away from right in front of his own goal.
27 min: When Belgium have the ball - which is most of the time - they play with a back three, Chadli pushing up to serve as a winger (while Mbappé and Griezmann act as defensive midfielders for France).
25 min: Griezmann sends over an out-swinging corner. Fellaini stoops to nod away at the near post.
23 min: Umtiti goes long for Giroud ... too long. France aren’t pretending to try outplaying Belgium here, they’re all set-up for the smash-n-grab.
22 min: Giroud only gets as couple iof hars to an attempted clearance from the corner. The ball drops behind Alderwerield, who swivels and shoots from 14 yards. Lloris hurls himself across goal to tip the ball around the post. Superb save!
21 min: More prolonged probing by Belgium. De Bruyne eventually tries to pick out Fellaini in the middle, but Varane gets his head in the way again to concede another corner.
19 min: Hazard collects the ball near the corner flag, then darts past Pavard and makes an angle for a shot. His fizzing effort is headed a yard over the bar by Varane!
17 min: Matuidi has a blast from nearly 20 yards. he strikes it sweetly but straight at Courtois, whose handling is sound. “It’s all very military so far,” reckons Hubert O’hearn. “The Infantry and mass movement of France against the lightning Cavalry of Belgium. Mbappe the rifleman, De Bruyne leading the charge. All we need is a castle to fight over.” Will a trophy do?
15 min: Witsel dispossesses a French player - as he has done several times already in the game - and nips the ball on to De Bruyne, who sprints away from Kanté but then mislays a pass intended for Lukaku. Moments later Belgium attack again, Hazard scurrying into the left-hand side of the French box and firing low and hard beyond the far post.
13 min: France win possession and try to cut Belgium open immediately, Pogba aiming a searching long pass towards Mbappe. The striker shows his phenomenal speed to leave Kompany and Vertonghen in the dust ... but he can’t reach the ball before Courtois, who races off his line and jumps on it.
12 min: Pogba drops a nice chipped pass over the Belgian defence and into the path of Mbappé, who tries to flick it first-time to Giroud. It’s a good idea but Alderweireld does will to beat the striker to it.
10 min: Pavard intercepts a complacent pass by De Bruyne. but Witsel wins it back for Belgium and returns it to De Bruyne, who immediately tries to play in Hazard, Varane scuttles across to prevent the Chelsea man from collecting it.
8 min: Belgium continues to knock the ball about while France coil up deep. They’re going to play a counter-attacking game by the looks of it, relying on Mbappé to spring them forward. If they ever get the ball ...
7 min: Chadli balloons the corner out of play on the far side, pricking the excitement.
6 min: A lovely elusive run by Hazard down the left, crowned with a dangerous low cross. Umtiti puts it out of play at the near post. Corner to Belgium ...
4 mins: De Bruyne curls a vicious cross into the six-yard box. Pavard shepherds it away from the danger zone before being robbed by Fellaini. Belgium begin probing anew outside the French box ...
3 min: It’s now clear that the Belgian formation is a 4-3-3, with Hazard and De Bruyne either side of Lukaku up front. Chaldi is at right-back and Vertonghen is on the left. Belgium’s first attack, meanwhile, ends when Chadli’s cross from the right is blocked by Hernandez.
1 min: Three, two, one ... we have kickoff! And the early indications are that Belgium are playing a flat back four with Chadli at right-back. Mbappé, however, starts by attacking the other flank, hurtling down the left wing and pinging in a dangerous low cross towards Griezmann. Belgium clear, but that was na uneasy start for them.
Fifa’s attempt to interpret Belgium’s team sheet puts De Bruyne as a left wingback. The truth will soon be revealed...
Lots of cheery pre-game greetings between the players, many of whom are club-mates and pals. Hazard seems to be chums with the entire French team, exchanging winks with Mbappé and shoulder bumps with Pogba and Giroud.
It’s sing-song time. France have plumped for La Marseillaise again. And Belgium have played safe, too, opting for La Brabançonne.
The players are in the tunnel. All of the look nervous, except for two: Eden Hazard and Kylian Mbappe, two of the coolest superstars in football.
The outcome of this match will go a long way to determining whether doubts continue to cling to both of these managers. But if they share the fact that both have many critics, the lineups seem to be further indications of their different styles – in fact, ‘style’ is not even the right word, since it has no place in the lexicon of Deschamps. He’s all about the bottom line: a win is a rose is a rose; a defeat is manure is manure. Martinez, on the other hand, likes to err on the side of adventure. He is a dreamer, possessed either of quixotic charm or the gab of a charlatan, depending on your point of view and, to an extent, on today’s result.
Deschamps has made just one change to the lineup that started France’s prosaic win over Uruguay, with Matuidi returning from suspension to replace Tolisso. Belgium’s lineup is intriguing/absurd: Roberto Martinez has opted for a bold approach to coping with the loss of the suspended Thomas Meunier, with Nacer Chadli filling in for him on the right of what looks like being a back four with Vertonghen at left-back. Or is it a back three with Chadli as a right wingback? And the left wingback being De Bruyne?! What we know for sure is that Mousa Dembélé comes into a beefed up midfield. That battle in the middle will be fascinating and ferocious. As for the prospect Mbappé running at Chadli or in the void behind De Bruyne, well, that’ll not be for the squeamish ...
France: Lloris; Pavard, Varane, Umtiti, Hernandez; Kanté, Pogba, Matuidi; Mbappé, Giroud, Griezmann
Subs: Mandanda, Areola, Kimpembe, Rami, Tolisso, Sidibé, Mendy, Lemar, Nzonzi, Thauvain, Dembélé, Fekir
Belgium: Courtois; Chadli, Alderweireld, Kompany, Vertonghen; Witsel, Dembélé, Fellaini; Hazard, Lukaku, De Bruyne
Subs: Mignolet, Casteels, Vermaelen, Boyata, Carrasco, Mertens, T Hazard, Tielemans, Januzaj, Dendoncker, Batshuayi
Referee: C Cakir (Tur)