The Euro 2008 winners dominated possession but initially struggled to create clear openings against Joachim Low's impressive young side. But after failing to break through with their subtle approach, Spain eventually brought out the sledgehammer.
Iker Casillas deserves plenty of credit for his fine save to deny Toni Kroos moments before the goal. But when midfield schemer Xavi curled a corner deep into the German box, 32-year-old Puyol showed the German young guns what experience can bring as he rose highest and then powered an unstoppable header beyond Manuel Neuer.
For Germany it was a game too far. But with their impressive victories against England and Argentina, they have signalled a new dawn for their national team.
Spain's prowess has been known for some time. That is why they had the strength to leave out a strangely shot-shy Fernando Torres. And against Holland at Soccer City on Sunday, they will attempt to confirm their class, as FIFA waits to crown a new champion, no matter what the outcome.
It was one of those games that is usually described as being for the purist. An alternative assessment would be boring. There was nevertheless a bewitching tactical battle that Spain started in the ascendancy and Germany slowly hauled their way back into.
The format was fairly predictable. Spain dominating possession, Xavi and Andres Iniesta attempting to pierce their opponents defence with intelligent and incisive close passing, while Germany looked to hit back with greater power on the counter-attack.
Aiming to become the first team since West Germany in 1972 and 1974 to follow up a European Championship triumph by lifting the World Cup as well, Spain's problem was the ferocious discipline of their opponents' defence.
On their charge to the last four, Mesut Ozil, suspended wide-man Thomas Muller and Miroslav Klose have captured most of the headlines. But Germany could not function without Arne Friedrich and Per Mertesacker doing the business at the back.
Having axed Torres, Spain coach Vicente del Bosque was putting more responsibility than ever on the shoulders of David Villa. Yet the Barcelona-bound forward had just one sight of the German goal, when Torres' replacement Pedro threaded a pass through for him to run onto. Neuer was out just as quickly to make a brave block.
Germany hardly touched the ball for 25 minutes and as it turned out, would have probably benefited from a more English-style route one approach. But when Spain finally paused for breath, Piotr Trochowski, the man entrusted to fill Muller's right-sided berth, forced Iker Casillas into a scrambling low save and thereafter the Spain skipper was the busier goalkeeper until the break.
The interval just triggered a repeat of the opening to the first half, as Spain totally dominated their bewildered opponents without making it count. Their best opportunity came when Pedro let fly with a speculative effort that was too strong for Neuer to hold. Andres Iniesta was onto the rebound in a flash, drilling the ball across goal from the left to where Villa, sliding in at the far post, just failed to make contact.
As they had done before, Germany began to make their presence felt midway through the half when Lukas Podolski chipped a cross to the far post which substitute Kroos met perfectly. In such moments are big matches won and lost. On this occasion Casillas thundered across his goal and made an impressive and important save.
Minutes later, Spain had their lead. That it should come in such a direct manner after the neatness that had gone before just highlights the paradox of the game. Puyol's skill was to evade the arm grabs that are now commonplace at all corners by beginning his run from deep. It had the added advantage of giving him the power to ensure once he had got his head to Xavi's corner, Neuer had no chance of keeping the ball out.
Germany did their best to press for an equaliser but in the end, they lacked enough nous. Indeed, had it not been for the greed of Pedro, who could have presented substitute Torres with a late tap-in, the margin of victory could have been greater.