A double from Antoine Griezmann and an intense first-half rearguard action saw hosts France stun World Cup champions Germany 2-0 in Marseille Thursday to set up a Euro 2016 final against Portugal.
Griezmann's 45th minute penalty, after a clear handball from Bastian Schweinsteiger, broke the deadlock at the end of a half which had been dominated by Germany. Griezmann added another for a tournament-leading tally of six in the 72nd to seal the tie.
Germany missed various chances through Thomas Mueller and Emre Can, and struck the woodwork late on through Joshua Kimmich but could not find a way past France keeper Hugo Lloris.
Griezmann said: "It's a whole group effort. It's thanks to the group we're in the final and we're going to make the most of tonight.
"I missed my penalty (for Atletico Madrid) in the Champions League final and I really wanted to make sure I put it in the back of the net tonight."
France held on for a first tournament win over Germany since 1958 and now meet Portugal in the Paris final Sunday. They are seeking their third Euro crown and a first title since 2000.
"My players deserved it," France coach Didier Deschamps said.
"It was very difficult for them. We played against a great team with enormous quality on the pitch. Germany are one of the best teams in the world but we beat them, also thanks to the great support from the crowd."
A despondent Germany coach Joachim Loew told Germany's ZDF television he could not fault his side.
"We played a great game and were the better side. We were dominant and pushed the French back," he said.
"We played with power, with courage and self-confidence and with great strength but we were unable to score. I can't reproach the team."
With centre-back Mats Hummels suspended, Loew reverted to four at the back after the Italy quarter-final with Benedikt Hoewedes partnering Jerome Boateng in the middle of the defence.
Schweinsteiger was fit to continue as the replacement for Sami Khedira while Julian Draxler and Can joined the midfield with Mueller pushed up front to replace the injured Mario Gomez.
France had N'Golo Kante and Adil Rami back from suspension but coach Didier Drogba instead backed the same eleven which had demolished Iceland in the last round, reshaping them into a bold 4-4-2.
An initial wave of energy from France forced Germany back and wonderful interplay from Griezmann and Blaise Matuidi led to the former having a shot tipped wide by Manuel Neuer.
Germany began to dominate with Schweinsteiger dropping deep to act as playmaker, and full-backs Jonas Hector and Kimmich pushing forward to flood the French midfield.
Mueller mishit a Can cross wide and Can then produced the save of the half from Lloris, who somehow got down to the bottom right hand corner to claw out his shot from the edge of the box.
France gradually came into the contest as Griezmann found the side-netting and Olivier Giroud lacked the pace required to test Neuer after beating Jerome Boateng.
Moments later France seized their opportunity as Schweinsteiger led with his arm attempting to clear a corner and, after consulting with his assistants, referee Nicola Rizzoli correctly pointed to the spot.
Griezmann, who missed a penalty in the Champions League final, made no mistake to by sending Neuer the wrong way.
Germany attempted to restore their control after the break but the France defence was resolute. Loew's side suffered another blow when Boateng went off injured on the hour to be replaced by Shkodran Mustafi.
Mario Goetze followed, for Can, and France reacted by removing winger Dimitri Payet for the additional security of Kante and the scene seemed set for the closing 20 minutes.
But a hideous touch in the box from Kimmich presented Pogba with the ball and, after he danced past Mustafi, Neuer flapped wildly at his cross. Griezmann was positioned perfectly and poked home his second of the game.
Kimmich struck the bar from distance as he tried to atone for his error, and Lloris stretched to his left in stoppage time to keep out a Kimmich header, but France held out to spark wild celebrations.
Neuer said: "It is a semi-final, there are no worse moments than losing these games. I don't want to say that we were the better side but 2-0 was not a fair result."