A stunning goal from Theo Hernandez sent France into the Nations League final after they battled back to beat Belgium 3-2.
The Milan full-back struck in the 90th minute after Karim Benzema and a Kylian Mbappe penalty had cancelled out goals from Yannick Carrasco and Romelu Lukaku.
Lukaku thought he had won an enthralling contest for Belgium with 88 minutes gone, but it was ruled out for offside after a VAR check, and France made their luck count.
In an even opening to the game, Hugo Lloris made a stunning save to keep out Kevin De Bruyne's scuffed effort from close range before Mbappe went close at the other end.
With each side lining up in a 3-4-3 that cancelled out the other, the game began to drift before Carrasco collected De Bruyne's pass, drove into the box past Benjamin Pavard, cut back onto his right foot and drilled a shot in at the near post with Lloris wrong-footed.
It was 2-0 before the interval, Lukaku spinning away from the flat-footed Lucas Hernandez before side-footing high beyond Lloris, again at his near post.
France kept Belgium pinned back early in the second half but Antoine Griezmann got the ball stuck under his feet after a brilliant run and cut-back from Mbappe.
Mbappe was involved again when France finally capitalised on their dominance, slipping the ball to Benzema, who shot low on the turn beyond the reach of Thibaut Courtois.
Seven minutes later, Mbappe – who missed in the shoot-out loss to Switzerland at Euro 2020 – swept a penalty past Courtois after a VAR check saw Youri Tielemans punished for catching Griezmann.
A rasping effort from De Bruyne was tipped over by Lloris and Aurelien Tchouameni was denied by Courtois, with VAR intervening again when Lukaku thought he had prodded in a winner against the run of play, the Chelsea striker having strayed fractionally offside to meet Carrasco's cross.
Paul Pogba's spectacular free-kick cannoned off the crossbar before France's unlikely hero found the winner, Theo Hernandez rifling left-footed into the right-hand corner after Benjamin Pavard's cross found its way to the Rossoneri star.
What does it mean? France to face Spain in final
Having looked dead and buried at half-time, France produced a display worthy of world champions to secure a showdown with Spain in Sunday's final. Belgium will meet European champions Italy in the third-place play-off, but victory there will come as little consolation after Roberto Martinez and their 'golden generation' saw another trophy chance slip from their grasp.
Pogba enjoys Turin return
Much of France's improvement was driven by Pogba, who began to dictate the midfield as Belgium sat off to hold onto their advantage. He created three chances, the most of any France player (and second in the match only to De Bruyne), won back possession in the build-up to the penalty and almost scored a sensational free-kick to cap a fine performance on his old Juventus stomping ground.
Martinez's men wilt under pressure
Belgium were guilty of giving France too much of the ball to build momentum early in the second half and they failed to react once Les Bleus were back in it. Experienced players such as De Bruyne, Eden Hazard and Jan Vertonghen seemed to go missing and Martinez's changes could not wrestle back control.
Belgium return to Turin to face Italy on Sunday. Later in the day, Spain and France lock horns in the final at San Siro.