Antoine Griezmann scored twice on Thursday as France beat world champions Germany 2-0 to seal a place in the Euro 2016 final against Portugal.
Having converted a controversial first-half penalty for Bastian Schweinsteiger’s handball, Griezmann put the result beyond doubt with a clinical second-half effort.
“We suffered but we knocked them out,” said French coach Didier Deschamps after the game in which Germany dominated possession.
The victory in Marseille mean Les Bleus face Cristiano Ronaldo-led Portugal in Sunday’s final at the Stade de France.
Griezmann is now the top scorer at the European Championship finals with six goals.
“We’ve had a good Euro, but now we’re out and it stings. It’s not a deserved result,” said goalkeeper Manuel Neuer.
France’s first win over Germany in their fifth meeting at major finals came out of a controversial penalty just before halftime.
Italian referee Nicola Rizzoli’s took an eagle-eyed decision.
Schweinsteiger conceded the penalty as replays showed his arm grazed the ball as he put his arms up while marking Patrice Evra from a corner.
Germany’s stars crowded Rizzoli, furious with the decision. But it was a decisive blow from which the 2014 World Cup winners never recovered.
With Mats Hummels suspended, plus Mario Gomez and Sami Khedira injured, Germany were forced into changes at the Stade Velodrome.
Liverpool’s defensive midfielder Emre Can made his first start at Euro 2016, winning only his seventh cap, for Khedira alongside Bastian Schweinsteiger.
Thomas Mueller started as striker for Gomez while Benedikt Hoewedes took Hummels place at centre-back alongside Jerome Boateng.
France coach Didier Deschamps kept faith with the same starting side which beat Iceland 5-2 in the last eight, retaining Samuel Umtiti and Moussa Sissoko.
Both sides were far from clinical in the opening exchanges with French and Germans alike guilty of spraying passes wide of their intended man.
A weak Griezmann shot and a Dimitri Payet free-kick straight at Neuer were France’s best chances early on.
At the other end, Germany were sloppy with a string of chances in front of goal while Schweinsteiger fired over from range.
The world champions first showed signs tempers were flaring when Can picked up a 36th-minute booking for hauling Griezmann down.
Then there was panic in the German defence moments later when Olivier Giroud broke clean away.
Only a perfectly-timed tackle from the furiously back-peddling Benedikt Hoewedes blocked his shot.
France were content to sit deep, letting Germany rule the midfield with Griezmann and Moussa Sissoko waiting to counter-attack with little success.
The penalty swung the game.
Mesut Ozil joined Schweinsteiger in picking up a booking by kicking the ball away while Mueller had to restrain a few of his German teammates.
Nevertheless, Griezmann showed a cool head by gratefully slamming his shot past Neuer in the second minute of added time.
France led 1-0 at the break, even though Germany had 64 percent of the first-half possession and 11 attempts on goal to France’s six.
The goal breathed life through the French team for the second-half as the Germans became ever more frustrated.
With 25 minutes left, Germany coach Joachim Loew threw on Mario Goetze for Can in the hope the World Cup winner could again produce some magic.
Germany’s problems were compounded as defender Jerome Boateng went off with injury with 61 minutes gone.
Griezmann settled the matter when Paul Pogba’s cross from the left was cleared by Neuer into the Atletico Madrid stars path to fire home on 72 minutes.
In a last gamble to avoid their first defeat at a finals since the Euro 2012 semifinals, Loew switched winger Leroy Sane for Schweinsteiger with 10 minutes to go, but France held firm.
Germany (4-2-3-1):Manuel Neuer (capt); Joshua Kimmich, Benedikt Hoewedes, Jerome Boateng, Jonas Hector; Bastian Schweinsteiger, Emre Can; Julian Draxler, Toni Kroos, Mesut Ozil; Thomas Mueller
Coach: Joachim Loew (GER)
France (4-2-3-1):Hugo Lloris (capt); Bacary Sagna, Samuel Umtiti, Laurent Koscielny, Patrice Evra; Blaise Matuidi, Paul Pogba; Moussa Sissoko, Dimitri Payet, Antoine Griezmann; Olivier Giroud
Coach: Didier Deschamps (FRA)
Referee: Nicola Rizzoli (ITA)