Portugal had the better of the 90 minutes, Spain the superior side in extra time, but the holders are through to the Final on penalties.
The neighbouring nations went head-to-head in Donetsk for a Euro 2012 semi-final. Spain surprised everyone with their change, shelving Fernando Torres and ‘false 9’ Cesc Fabregas in favour of Sevilla striker Alvaro Negredo. Naturally, Portugal put their hopes on Real Madrid star Cristiano Ronaldo, facing many of his club teammates. Hugo Almeida stepped in after Helder Postiga picked up a thigh injury against the Czech Republic.
Alvaro Arbeloa had the first chance after nine minutes, but at the end of a long passive move he side-footed over the bar from 16 yards. At the other end, Iker Casillas had to pluck a dangerous Cristiano Ronaldo cross off the head of Nani in the six-yard box.
Spain kept possession, but were not given as much time on the ball as they are accustomed to, as Portugal pressed and went on rapid counter-attacks. During a period of intense pressure around the box, Sergio Ramos risked a penalty with his clumsy header, but the referee waved away appeals for handball. Replays show it was the correct decision, as it hit his chest and then ricocheted on to the top of the arm.
When the Spanish did find space, Andres Iniesta curled just over the bar from a very promising position. There was controversy on the half-hour when Nani had surged forward between four defenders, but the referee insisted on pulling play back to award a Portuguese free kick.
Joao Moutinho won back possession to set up Cristiano Ronaldo’s snapshot inches wide of the upright.
Negredo was a surprise pick and did not deliver, so made way for Fabregas as Spain returned to the no-striker system.
Hugo Almeida smashed over from distance when he had Ronaldo and Nani waiting for the pass, while Xabi Alonso tried to score from his own half when spotting Rui Patricio off his line. Miguel Veloso gave away possession in midfield, sparking a counter that saw Xavi Hernandez blast straight at Rui Patricio.
Hugo Almeida drilled over when Nani was hoping for an assist and a couple of trademark Ronaldo free kicks dipped just a little too late and whistled over the bar.
Portugal had the perfect opportunity to snatch a victory in the final minute when breaking on the counter from a Spanish free kick, but Ronaldo smashed well over in acres of space.
An Iniesta snapshot was charged down after he pounced on a poor clearance, but Spain had a sensational chance 13 minutes into extra time. Jordi Alba got to the by-line and pulled back for Iniesta, but his first-time shot was well palmed away by Rui Patricio.
Sergio Ramos curled a free kick just over the near top corner, scraping the woodwork. Spain piled on the pressure in extra time and Jesus Navas forced Rui Patricio into a one-handed save on his angled drive, which Pepe shepherded back into his arms.
Pedro Rodriguez surged forward from a Fabregas pass on the counter and Fabio Coentrao needed to come across for a decisive interception as he was about to pull the trigger. It was too little, too late and this semi-final went to penalties, confirming the only goal scored against Spain in the tournament was by Italy's Antonio Di Natale.
Xabi Alonso was first up and saw his spot-kick saved, but Joao Moutinho had the exact same fate. Iniesta sent Rui Patricio the wrong way to finally give this game a goal.
Pepe stepped up against his Real Madrid teammate Casillas and buried it beneath the goalkeeper’s elbow. Gerard Pique scored too, but in a bizarre moment Bruno Alves was intercepted as he was walking into the box by Nani, who was meant to be going first, and smashed it under the bar.
Sergio Ramos did an Andrea Pirlo and chipped Rui Patricio to keep Spain in front. Bruno Alves did finally arrive and hit the underside of the bar.
Fabregas took the last kick, which went in off the inside of the near post to send Spain through to the Euro 2012 Final. Cristiano Ronaldo was set to take the final Portuguese kick, but never got the chance, as Spain won 4-2.
Portugal 0-0 Spain (aet, 2-4 on pens)
Penalties: Xabi Alonso (Spa, saved), Joao Moutinho (Por, saved), Iniesta (Spa, goal), Pepe (Por, goal), Pique (Spa, goal), Nani (Por, goal), Ramos (Spa, goal), Bruno Alves (Por, bar)
Portugal: Rui Patricio; Joao Pereira, Pepe, Bruno Alves, Fabio Coentrao; Raul Meireles (Varela 113), Miguel Veloso (Custodio 105), Joao Moutinho; Nani, Hugo Almeida (Nelson Oliveira 81), Cristiano Ronaldo
Spain: Casillas; Arbeloa, Pique, Sergio Ramos, Jordi Alba; Xavi Hernandez (Pedro Rodriguez 87), Busquets, Xabi Alonso; David Silva (Jesus Navas 60), Negredo (Fabregas 54), Iniesta
Ref: Cakir (Tur)
Tickets for the Champions League final between Juventus and Real Madrid are still on sale with reseller Viagogo - Click to find out more