A second half goal from defender Carles Puyol sent Spain into their first World Cup final, securing a 1-0 win over three-times champions Germany.
Spain will now meet twice-finalists the Netherlands in Monday morning's final at Soccer City in Johannesburg, guaranteeing a new name on the trophy.
The veteran centre back Puyol settled the encounter at the Durban Stadium with a towering header in the 73rd minute following a Xavi corner on the left, giving German keeper Manuel Neuer no chance.
The Spanish coach Vicente Del Bosque had sprung a surprise before kick-off by dropping out-of-form Liverpool forward Fernando Torres and replacing him with Barcelona youngster Pedro.
The finalists, Spain and the Netherlands, have never previously met at a World Cup.