Forward Pedro continued his hot streak, scoring twice to take his tally to nine in Spain's last six games.
Pedro has struggled to make his mark for Barcelona this season but put the South American champions to the sword with two clinical finishes at the Khalifa International Stadium in Doha.
Cesc Fabregas struck first for Spain, his swerving shot helped into the net by keeper Fernando Muslera, before Cristian Rodriguez side-footed past Victor Valdes to equalise.
After a half-time presentation to Puyol, handed the captain's armband for the occasion before the shaggy-haired stopper sat out the second half, Spain took control.
Pedro fired a low angled shot past Muslera to make it 2-1 on 51 minutes and sealed the game by finishing a Fabregas cross 16 minutes from time.
"They [friendlies] are difficult, tough games with the mentality you have to bring, the desire and the excitement," Pedro told Spanish television.
"But I think this team is doing nice and important things and once again we managed a fantastic result against a great team like Uruguay."
Old rivalries were being revisited in a plethora of friendlies taking place across the continent.
In later games, England were meeting 2014 World Cup hosts Brazil at Wembley, France and Germany were squaring off in Paris and the Netherlands hosting Italy in Amsterdam.
Puyol was not the only player celebrating 100 international appearances, with Croatia goalkeeper Stipe Pletikosa reaching his century in the 4-0 victory over South Korea and England defender Ashley Cole running out for the 100th time against Brazil.
In-form striker Mario Mandzukic put Croatia on their way to a comprehensive win over South Korea in London, setting Igor Stimac's side up nicely for next month's politically-charged 2014 World Cup qualifier against Balkan arch-rivals Serbia.
Mandzukic, top-scorer in the Bundesliga this season with 14 for Bayern Munich, netted the first at Fulham's Craven Cottage. Darijo Srna, Nikica Jelavic and Mladen Petric were also on target.
Serbia, who have made a poor start to World Cup qualifying - picking up four points from four games to trail unbeaten pacesetters Belgium and Croatia by six points - beat Cyprus 3-1 in Nicosia with Dusan Tadic scoring twice.
Turkey also have a tough job ahead of them to get back into contention for a place in the Brazil finals and a 2-0 home defeat by the Czech Republic was not the confidence-boost coach Abdullah Avci was seeking.
Turkey's domestic league has attracted Dutch playmaker Wesley Sneijder and Ivorian striker Didier Drogba this month but the national team continues to struggle, losing to first-half goals from Ladislav Krejci and David Lafata.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.