German coach Joachim Loew said his side was the better team despite the loss, as he cursed bad luck for costing them a place in the final.
The world champions went into the game with three players ruled out by injuries and suspension and they lost key defender Jerome Boateng in the second half.
They dominated the first half, however, before an Antoine Griezmann penalty put the tournament hosts ahead on the stroke of half-time.
“There weren’t too many things that went wrong,” Loew said.
“We were the better team. We invested a lot and had good body language. We were powerful. It was unfortunate that we conceded the goal. It was bad luck.
“We had our chances, but sadly we didn’t score. We didn’t have the luck needed today. (When we went out) in 2012 or 2010, the sides were better than us, but today that wasn’t the case.”
Loew felt the departure of the injured Boateng had been significant.
“The side did everything I told them. There is nothing to blame them for,” he said.
The penalty turned the game but Loew was reluctant to criticise Italian referee Nicola Rizzoli.
“I don’t say anything about referees’ decisions. You have to accept them. I don’t know if it was a penalty. If you see how he approached the ball, it touched his hand, but it was bad luck,” he said.
“There is nothing to blame him for, but the hand up there you can say it shouldn’t be there. There are movements and you can’t control them.”
Loew said it was too soon to talk about his own future.
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.
He 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.
France held on for a first tournament win over Germany since 1958 and now meet Portugal in the Paris final on Monday morning, Australian time. They are seeking their third Euro crown and a first title since 2000.
With centre-back Mats Hummels suspended, Germany coach Joachim 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.
They 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 Manuel 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.
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.
We value local independent journalism. We hope you do too.
InDaily provides valuable, local independent journalism in South Australia. As a news organisation it offers an alternative to The Advertiser, a different voice and a closer look at what is happening in our city and state for free. Any contribution to help fund our work is appreciated. Please click below to become an InDaily supporter.