The two sides drew 2-2 after 120 minutes with Italy creating the majority of the chances.
Davide Astori put the Italians ahead after 25 minutes before Edinson Cavani levelled the scores after the interval.
Alessandro Diamanti restored the Italians' lead after 73 minutes, before Cavani netted again to make the score 2-2 and take the game into extra-time, where Riccardo Montolivo saw red after picking up two bookings.
Then Buffon came into his own, saving from Diego Forlan, Martin Caceres and Walter Gargano to win the game for Italy.
Uruguay started the game strongly and Forlan was the first to test either stopper, with his dipping free kick forcing Buffon to dive low.
A free-flowing move from Italy culminated with a scuffed shot from Antonio Candreva after 15 minutes before the Italians went ahead eight minutes later.
A Diamanti free-kick ricocheted off the post and onto Uruguay stopper Fernando Muslera, with the ball falling to Astori, who from a yard out, tapped home.
Luis Suarez got in behind the Italian backline before hitting a rasping shot which tested Buffon just before the half hour mark, before Maxi Pereira forced a decent stop from the Juventus man before the break.
The pressure told 12 minutes after the restart when a well-weighted pass from Alvaro Gonzalez found an unmarked Cavani who slotted into the far corner past Buffon's outstretched left hand.
Diamanti restored Italy's lead with 17 minutes left with a wonderful 25 yard free-kick which gave Muslera no chance.
It was feat replicated by Cavani three minutes later as his powerful effort was too much for Buffon, who could not get his feet moving to get across in time to keep the Napoli striker's effort out.
Italy had to play the final 10 minutes of extra-time with 10 men following Montolivo's second yellow for a late challenge on Suarez, but Uruguay could not get past Buffon.
And Forlan could not do so with his spot kick, while Alberto Aquilani, Cavani, Stephan El Shaarawy, Suarez all scored before Mattia De Sciglio's miss brought the South Americans back into the shoot-out.
However Caceres missed and Emanuele Giaccherini scored before Buffon saved Gargano's effort.