Carles Puyol's second-half header was enough to send Spain into their first World Cup final with a 1-0 win over Germany.
Although Spain dominated possession in their last-four meeting with Germany in Durban, their opponents had just wasted an excellent chance to open the scoring themselves through Toni Kroos when Puyol struck.
The 32-year-old Barcelona defender rose highest to meet Xavi's corner and powered his header beyond Manuel Neuer to seal a deserved victory.
Although they have won so many admirers for the manner of their performances in South Africa, this promised to be an altogether different test for Germany.
After 14 minutes, Andres Iniesta drove a low cross into the penalty area following an intricate move from a corner which Puyol flung himself at but sent a diving header soaring over
It took Germany almost half an hour to enjoy their first sustained period of possession, which Mesut Ozil brought to an end by launching a long ball for Miroslav Klose which was far too heavy and rolled out for a goal kick.
Germany might have had a penalty when Sergio Ramos stumbled into Ozil just before the break but referee Viktor Kassai waved away the claims.
Joachim Low's side sensed a breakthrough of their own midway into the second period when Lukas Podolski's chipped cross fell perfectly for the onrushing Kroos.
Iker Casillas made a fine save though, which Spain used to maximum advantage. Having forced a corner, Puyol again escaped the attentions of Germany's defence, running from deep to meet Xavi's inswinging effort with a firm header that had too much pace for Manuel Neuer as it flashed into the net.
Vicente Del Bosque introduced Fernando Torres for David Villa nine minutes from time and the Liverpool forward should have scored immediately, only for Pedro to completely ignore him and lose the ball to Friedrich when all he had to do was pass it square.
Copyright (c) PA Sport 2009, All Rights Reserved.
Do YOU want to write for GiveMeSport? Get started today by signing-up and submitting an article HERE: http://gms.to/writeforgms