The sides were locked at 2-2 after regular time and neither side could find the net in extra time.
German goalkeeper Ulrich Bubolz was then the hero when he saved three Spanish penalty flicks to set up a repeat of the 2002 final.
Despite Spain's good start, Germany were first on the scoreboard with Bjoern Emmerling finding the back of the net.
The scores were tied when Spanish talisman Santiago Freixa blasted the ball through Bubolz's legs from a penalty corner.
In the second half, the story was the same when Germany scored first through Moritz Fuerste before Spain equalized through Alex Fabregas a minute later to end the scoring in normal time.
Earlier, Olympic champions Australia booked their place in the final with 4-2 win over South Korea.
The Kookaburras will be looking for revenge in the final after losing 2-1 to the Germans in the 2002 final in Kuala Lumpur.