كتب : Hatem Maher
The Barcelona central defender headed home after a corner with 17 minutes remaining as Spain edged closer to their first ever World Cup triumph.
Their best position came in the 1950 World Cup in Brazil when they finished fourth.
The EURO 2008 champions will face Holland, who appeared in the final twice but never won the World Cup, in Sunday's final in Johannesburg as the football's most prestigious tournament awaits a new winner.
Three-time world champions Germany take on Uruguay on Saturday in the third-place playoff.
Spain had the upper hand throughout the game but struggled to apply the finishing touch.
Germany lacked their usual pace and could not replicate the form that saw them demolish England and Argentina with comprehensive wins en route to the semi final.
Spain wasted two opportunities to open the scoring in the first half.
The first came as early as the sixth minute when striker David Villa caught Germany defender Arne Friedrich napping to run onto a deft through pass from Pedro but keeper Manuel Neuer's timely interception denied him.
Puyol headed a cross from the lively Andres Iniesta narrowly over the bar nine minutes later.
Germany had a sole half-chance when Piotr Trochowski, who replaced the suspended Thomas Mueller, forced a fine save from Iker Casillas with a fine low drive.
Spain kept up their pressure in the second half, with Pedro having a powerful shot blocked by Neuer before Iniesta gathered the ball and played it a cross the six-yard box but it went begging.
Germany could not withstand the onslaught until the end as Puyol ended their resistance in the 73rd minute.
He rose above the German defense to meet a Xavi corner with a superb header that went past Neuer.