Arsenal midfielder Cesc Fabregas kept his nerve to hit the winning spotkick after earlier misses from Italy pair Daniele De Rossi and Antonio Di Natale. Dani Guiza also missed for Spain before Cesc stepped up to slot the ball past Gigu Buffon in the Italian goal.
The two teams played out a tense 0-0 draw in normal and extra-time with chances at a premium.
Spain looked the more threatening of the two sides in the opening 45 minutes but their best efforts either went wide or were fairly comfortable for Italy goalkeeper Gianluigi Buffon.
Just on the hour and with the game still locked at 0-0 and little sign of an opening goal both coaches opted to make changes, with Mauro Camoranesi coming on for Italy and Cesc Fabregas and Santi Cazorla introduced by Spain coach Aragones.
Those substitutions almost brought about the opening goal, with Italy having the best chance of the match so far in the 60th minute through Camoranesi.
Toni caused problems in the Spain defence with his height and strength and, after the ball had fallen to him seven yards out, Camoranesi saw his goalbound shot deflected away by the left leg of Iker Casillas.
Then Senna twice tested Buffon in quick succession.
The first saw Buffon fist away the Villarreal midfielder's free-kick, before the Italy number one was almost left with egg on his face following another long-range effort from Senna.
Buffon looked to have the shot covered, but it squirmed out of his grasp before hitting the post, much to the goalkeeper's relief.
Toni then spurned what looked set to be a great chance for Italy with eight minutes to go when he tried an ambitious overhead kick, but succeeded only in deflecting the ball away from the unmarked Grosso at the far post and out of play.
Extra-time was a cagey affair, with little way of creativity as both teams targeted the penalty shootout.