The Italy forward struck twice in 16 minutes to silence critics with a glorious performance that snapped Germany's 15-match winning streak in competitive games.
The victory sets up an unexpected final in Kiev on Sunday with the world and European champions with whom the Italians drew 1-1 in the group stage of the tournament.
Germany midfielder Mesut Ozil converted a penalty in added time after Federico Balzaretti had handled in the area but Italy held on for the victory.
The distraught Germans are now without a win against the Italians in all eight of their tournament meetings since their first half a century ago.
"I'll say only that when one talks about Italy everyone needs to be very careful," said Italy's coach Cesare Prandelli. "We have played an extraordinary game. We have given an example of how to show grace and an attachment to the shirt."
Asked about Balotelli's performance he added: "He's brilliant, but this was a team effort. We played a fantastic game against a really good side."
"We did those things that put the opponents in difficulty. The career of Mario Balotelli has only just begun."
Germany captain Philipp Lahm said: "It's very, very bitter. We made mistakes that led to those two goals. We worked hard in the first half and we had chances but you can't give up goals like that."
"Every defeat is bitter, especially after getting so far in the tournament. But if you can't get the job done at the right time or aren't clever enough in certain situations then you lose," he added.
Germany had almost fallen behind in the opening minutes when a Sami Khedira back header found Antonio Cassano who slipped it through for Balotelli but he was caught by keeper Manuel Neuer.
Cassano, whose career was in serious doubt after heart surgery late last year, was back to his creative best, slicing open a Germany defence with pinpoint passes while also causing constant problems for Germany right back Jerome Boateng.
Andrea Pirlo rescued the Italians in the fifth minute when Mats Hummels met a Bastian Schweinsteiger corner only to see his effort cleared by the Italy playmaker almost on the line.
The Italians, as their coach Cesare Prandelli had assured, did not give up their offensive game in favour of a more conservative approach and kept going forward.
They forced two good saves from Neuer before Balotelli struck in the 20th minute. Cassano swirled past Boateng and Hummels to glide over a smooth left-footed cross and the 21-year-old Italy striker drilled in a header top open the scoring.
Balotelli, long criticised for not realising his full potential and for his off-the-pitch antics, stepped up again in the 36th when the German defence was caught napping by a deep Riccardo Montolivo cross and the forward thundered in an unstoppable shot after a deft first touch.
Germany coach Joachim Loew decided to add some pace to his team with Miroslav Klose and Marco Reus coming on at the start of the second half and they quickly took control of the game.
Fired on by constant chanting from the more than 15,000 Germany fans in the National Stadium they poured forward and came close when Buffon, at full stretch, tipped a Reus free kick onto the bar.
With time running out, however, the Germans grew impatient and mistakes started to add up as Italy lurked on the break with Claudio Marchisio twice seeing his efforts sail narrowly wide and substitute Antonio Di Natale also wasting a good chance.
With time running out Germany pushed players forward and put the Italian defence under more and more pressure with their efforts finally paying off as Balzaretti clumsily handled in the box but Ozil's goal from the spot came too late.