Ireland's Anne O'Flanagan opened scoring after a penalty corner was awarded only three minutes into the first quarter.
However, the rest of the game's first half saw no more goals, despite two more penalty corners for Ireland in the opening 30 minutes.
Spain equalised in the third quarter, with Alicia Magaz finally putting her team on the scoreboard after 39 minutes.
With the score at 1-1 at the final whistle, the game went to a penalty shoot-out.
After a tense 2-2 result after five shots, Spain missed and Ireland's Gillian Pinder secured Ireland's spot in the final.
Today's match marked the first time an Irish team had ever reached a semi-final.
They'll now face the winner of today's second semi-final between Netherlands and Australia, which tips off at 4.30pm.
The final, meanwhile, will take place in London at 4.30pm tomorrow afternoon.