The opening goal came in first-half stoppage-time through Griezmann's controversial penalty after Germany captain Bastian Schweinsteiger was punished for handling as he attempted to block Patrice Evra's header.
Joachim Low's men had the better of the match up until the spot-kick decision, but they posed less of a threat after the break – failing to register a shot on target until injury time as France defended stoutly.
And Griezmann sealed the victory in the closing stages after mistakes from Joshua Kimmich and Manuel Neuer presented him with a simple finish.
Germany had beaten France en route to its World Cup success two years ago, but it will not secure a famous double as its 20-year wait for a continental crown goes on, with Portugal now awaiting Les Bleus in Monday's (AEST) final at Stade de France.
After winning its first major semi-final appearance since the 2006 World Cup, Didier Deschamps's side will be favourite as it looks to seal glory having won its two previous finals in the tournament.
France – playing with an unchanged team for the first time in its Euros history – came close early on when Griezmann weaved through the Germany defence and forced Neuer into an important low save.
Germany responded swiftly, with Hugo Lloris at full stretch to keep out a threatening deflected effort from Emre Can, who was one of three changes for the world champion as it re-shuffled its pack due to the absences of Mario Gomez, Mats Hummels and Sami Khedira.
Low's men were the more threatening side as the first half progressed and Toni Kroos went down right on the edge of the box under pressure from Paul Pogba and Samuel Umtiti, but referee Nicola Rizzoli was unmoved as the Real Madrid midfielder claimed for a penalty.
Germany was dominating possession, but the match took a dramatic twist seconds before the half-time whistle when Rizzoli controversially did point to the spot at the other end.
In the match that he became outright holder of the European record for appearances at major tournaments, Schweinsteiger denied Evra the chance to head at goal with his arm from close-range after Griezmann's corner.
Griezmann was the taker and he showed no nerves to send Neuer the wrong way despite having missed a penalty in the UEFA Champions League final under six weeks ago.
With Hummels suspended, Low suffered a huge blow when his other first-choice centre-back, Jerome Boateng, limped off after an hour.
Germany continued to have most of the ball in the second half, but it had failed to trouble Lloris before Griezmann secured a famous home victory with 18 minutes remaining.
Pogba capitalised on a defensive error from Kimmich and when Neuer could only push his cross into the path of Griezmann, the Atletico Madrid forward stabbed home his sixth goal of the tournament.
Kimmich curled an excellent effort off the far post from the edge of the area, but Germany ultimately failed to trouble Lloris until it was too late.
The Tottenham keeper made a brilliant stoppage-time save from Kimmich's header to preserve his clean sheet as France booked its date against Portugal.