The game never touched the heights and penalties were 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.
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.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.