The 21-year-old Manchester City star broke German hearts with a first-half header and sublime strike as Joachim Loew's inexperienced team -- the youngest of the 16 at Euro 2012 -- failed to cope with Cesare Prandelli's street-wise Italians.
A late penalty from Mesut Ozil proved no more than a consolation score for the Germans whose 16-year wait for a major title continues.
Italy are now into Sunday's final in Kiev to face defending champions Spain with the Italians bidding to win their first European crown since 1968.
Man-of-the-match Andrea Pirlo was again superb for the Italians, as the 33-year-old Juventus star had been in the quarter-final win over England.
"We played exactly how we had wanted to," said Prandelli.
"We managed to make life hard for Germany, we have Riccardo Montolivo to thank for that.
"Spain are the favourites, but we proved that we have a strong team."
Victory at Warsaw's National Stadium means Italy maintain their impressive record of having never lost to Germany at a World Cup or European Championships on their eighth meeting at a major tournament.
"It is a very, very bitter defeat," admitted Germany captain Philipp Lahm.
"We made stupid mistakes and we shouldn't have conceded the goals in the way we did.
"When you fall behind against the Italians, it makes life very difficult.
"The most bitter part is that this team has so much potential for more than this, but we weren't clever enough."
Having dropped three of his forwards for last Friday's 4-2 quarter-final win over Greece, Loew again tinkered with his starting line-up, but this time it back-fired as the Germans lacked an effective Plan B when things went wrong.
Arsenal-bound Lukas Podolski was hauled off at half-time, striker Mario Gomez also made way for 34-year-old veteran Miroslav Klose after the break, while Toni Kroos barely troubled the Italian defence from the right wing.
Germany had a couple of golden chances early on, but the Azzurri soon asserted themselves and after Riccardo Montolivo tested Germany goalkeeper Manuel Neuer, Italy took the lead on 20 minutes.
Antonio Cassano ghosted through two German defenders and crossed for Balotelli to beat his marker Holger Badstuber and slam his header past Neuer.
It was the first time since the Euro 2008 final Germany had fallen behind in a European Championship match after their ten wins in qualifying and their four wins so far at Euro 2012.
The perplexed looks in the German ranks told their own tale.
Rattled, the Germans tried to reassert themselves with Mesut Ozil and Gomez both squandering half chances, but Italy captain Gianluigi Buffon stood up to the challenge in goal before the Azzurri struck again.
A sublime pass from Fiorentina's Montolivo split the German defence and gave Balotelli all the space he needed to curl his shot past Neuer on 36 minutes.
With the Germans now reeling, Reus was quickly into the action after replacing Podolski and tested Buffon with a well-struck free-kick with an hour gone.
But the Italians were not to be denied their first European final since their Euro 2000 defeat to France when Claudio Marchisio fired wide on 67 minutes and again eight minutes later.
A handball by Federico Balzaretti in the 92nd minute gave Germany brief hope as referee Stephane Lannoy pointed to the spot and Ozil blasted home the spot-kick, but it was too little, too late.
The Azzurri can now dream of denying world and European champions Spain a third consecutive major title on Sunday.