Marcos Senna came closest in normal time when Italy keeper Gianluigi Buffon fumbled his shot on to a post.
Spain keeper Iker Casillas was the hero in the shoot-out, saving from Daniele de Rossi and Antonio di Natale.
Daniel Guiza saw his spot-kick saved by Buffon, but Arsenal’s Cesc Fabregas slid home the crucial penalty to set up a last four clash with Russia.
The game never touched the heights and penalties was an almost inevitable outcome given the approach of both sides.
There will now be an intriguing backdrop to the semi-final in Vienna on Thursday, with Spain having beaten Russia – admittedly minus the inspirational Andrei Arshavin – 4-1 in a group game earlier in the competition.
And it was a change of fortune for the Spanish, who have gone out of three major championships on 22 June, the World Cups of 1986 and 2002 and Euro ’96 – all in the quarter-finals on penalties.
The opening 45 minutes was a cautious affair, with chances – and quality – at a premium. David Villa, predictably, was the first player to pose a serious threat with a low drive drive from long range that was comfortably held by Italy keeper Buffon.
Fernando Torres had been kept quiet by some trademark Italian defending, but he escaped the shackles after 31 minutes to help set up a chance for David Silva, who curled a shot only inches wide from 25 yards.
Spain tried to break the stalemate by making a double substitution on the hour, sending on Fabregas and Santi Cazorla for Xavi and Andres Iniesta.
But it was an Italian substitute, Mauro Camoranesi, who almost made the breakthrough seconds later when he ended a chaotic goalmouth scramble with a shot that was blocked by the legs of Spanish keeper Casillas.
It had been a frustrating evening for the much-vaunted Spanish strike force of Torres and Villa – and the latter was booked for diving by referee Herbert Fandel after 71 minutes when he tumbled under challenge from Giorgio Chiellini.
Download EURO 2008 Theme Song
Like a Superstar, Feel the Rush, Like a Superstar (video avi), Feel the Rush (video avi), Like a Superstar (.3gp – for Nokia), Feel the Rush (.3gp – for Nokia), Download other free MP3 here, Download Software Euro Schedule, Gol Sverkov (Swiss-Rep. Ceska) Euro 2008, Gol Sverkov.3gp (Swiss-Rep. Ceska)(for Nokia)
Italy keeper Buffon suffered an anxious moment with 11 minutes left when he was forced to punch away a long-range free-kick from Senna.
He had an even bigger scare seconds later when he fumbled a routine shot from Senna, and was relieved to see the ball bounce back into his arms off an upright.
Torres had been disappointing, but it was still a surprise to see him hauled off again by Spain coach Luis Aragones with six minutes left and replaced by Guiza.
Spain had the first chance of extra time, with Silva sweeping an effort just wide with Buffon beaten.
Italy‘s response saw swift as Casillas turned over a header from Di Natale and Luca Toni headed just over the top.
The stalemate was soon resumed, although Cazorla shot across the face of goal with seconds left as the last chance of avoiding penalties was wasted.
Villa and Fabio Grosso exchanged successful penalties and Cazorla scored for Spain before Casillas saved brilliantly from De Rossi.
Senna and Camoranesi scored, but when Buffon saved from Guiza Italy were back in contention – only for Casillas to repeat his heroics to stop Di Natali’s spot-kick.
Fabregas, on as substitute, was left to settle the affair and calmly beat Buffon to spark wild Spanish celebrations.
Spain: Casillas, Sergio Ramos, Marchena, Puyol, Capdevila, Iniesta (Santi Cazorla 59), Senna, Xavi (Fabregas 59), Silva, Villa, Torres (Guiza 85).
Subs Not Used: Palop, Albiol, Fernando Navarro, Alonso, Sergio Garcia, Arbeloa, Juanito, De la Red, Reina.
Booked: Iniesta, Villa, Santi Cazorla.
Italy: Buffon, Zambrotta, Panucci, Chiellini, Grosso, Aquilani (Del Piero 108), De Rossi, Ambrosini, Perrotta (Camoranesi 58), Toni, Cassano (Di Natale 75).
Subs Not Used: Amelia, Gamberini, Borriello, Quagliarella, Materazzi, De Sanctis.
Ref: Herbert Fandel (Germany).
Filed under: Euro 2008