A high-quality penalty shootout eventually finished 7-6 to Spain, although it was Italy who had the better of the play during the goalless 90 minutes.
After a close opening period, Italy created a host of chances in quick succession.
First Alberto Gilardino fired just wide after Antonio Candreva's delivery, then Christian Maggio was denied by Iker Casillas before Daniele De Rossi flicked his header just wide from a Andrea Pirlo free kick.
The Italians continued to dominate and almost took the lead again through Maggio before Fernando Torres dragged a half-chance just wide of the post.
In the second half there were even fewer chances until the final few minutes, when a rare Spain counter-attack saw Gerard Pique meet Jesus Navas's cross but he could only blaze the ball over the bar as extra time ensued.
Spain finally found their cutting edge in the the extra 30 minutes, but not before Emanuele Giaccherini smashed the ball against the post from a tight angle five minutes in.
A series of corners and free kicks had Italy under pressure for much of the first period, but they held firm. In the second 15 minutes Spain seemed to run out of steam until the final minute, when Xavi let fly from just outside the box only to see Gianluigi Buffon push the ball against the post before Javi Martinez fired the rebound wide.
Both sides looked relatively confident going into the penalty shootout, producing a succession of excellent penalties which gave the goalkeepers no chance.
Finally, at 6-6 in the shootout, Leonardo Bonucci fired his effort high and wide, allowing Jesus Navas to step up and fire Spain into the final.