Jorginho scored the winning spot-kick after Alvaro Morata's penalty was saved in Italy's shoot-out win over Spain, which sends them into Sunday's Euro 2020 final.
Spain striker Morata - who has been criticised throughout the tournament - had tasted redemption when he stepped off the bench to strike his side's equaliser in normal time, after Federico Chiesa had scored on the break for Italy.
However, he never looked confident from 12 yards and when his tame effort was saved by Gianluigi Donnarumma, his former Chelsea team-mate Jorginho coolly rolled in his clinching kick.
Italy - who are now unbeaten in 33 games - are on course for a second European Championship title and will face England or Denmark back at Wembley on Sunday after eventually edging an engrossing, at times end-to-end battle with Spain.
Italy: Donnarumma (7), Di Lorenzo (8), Bonucci (7), Chiellini (7), Emerson (6), Barella (7), Jorginho (7), Verratti (6), Chiesa (8), Immobile (6), Insigne (6).
Subs used: Berardi (6), Pessina (6), Toloi (6), Locatelli (5), Belotti (7), Bernardeschi (7),
Spain: Simon (6), Azpilicueta (6), Garcia (5), Laporte (7), Alba (6), Koke (8), Busquets (8), Pedri (8), F Torres (5), Oyarzabal (4), Olmo (8).
Subs used: Morata (6), Rodri (6), Moreno (6), M Llorente (6), Thiago (6), P Torres (6)
Man of the match: Pedri (Spain)
How Italy came out on top...
Spain boss Luis Enrique had said this would be a battle between two sides trying to dominate possession - but there was no control from either side during a breathless, electric first half.
Nicolo Barella hit the post inside four minutes with a wonderful chip - although an offside flag was raised - before the impressive Pedri slipped through Mikel Oyarzabal at the other end. The forward was unable to get it under control in the box and the chance passed, with Ferran Torres drilling wide soon after.
Italy made one change, with Emerson coming in for the injured Leonardo Spinazzola, while Spain switched three: Eric Garcia was in for Pau Torres, Mikkel Oyarzabal replaced Alvaro Morata in attack, while Dani Olmo took Pablo Sarabia’s spot out wide.
Chelsea back-up left-back Emerson rose to the challenge of replacing the injured Leonardo Spinazzola and carved Spain open on 21 minutes with a one-two with Lorenzo Insigne. With Unai Simon out of his goal, the Italian fans around Wembley were urging their side to shoot, but neither Ciro Immobile nor Barella could find an angle to the unguarded net, with Spain defenders scrambling back and Sergio Busquets eventually ending the danger.
Italy goalkeeper Donnarumma saved from Dani Olmo before the lively RB Leipzig man fired over soon after and Oyarzabal followed suit on 40 minutes, but it was the Azzurri who had the last say of the opening 45, with Emerson darting behind the Spanish defence and recording his side's first shot with a drive narrowly over the bar from a tight angle.
- Italy-Spain player ratings | Hits and misses: Spain pay penalty for profligacy
- Luis Enrique: Not a sad night | 'Morata was excellent'
- How the teams lined up | In-depth stats and analysis
- Euro 2020 fixtures and schedule | Euro 2020 gossip column
The intensity continued after the break, with Immobile shooting wide after getting the wrong side of Aymeric Laporte, and Busquets clipping an effort narrowly over the bar before Chiesa and Oyarzabal hit the target.
After those early chances at each end, it was Spain in the ascendancy - until Italy's counter-attack on the hour mark broke the deadlock.
Insigne's through ball for Immobile was blocked by Laporte but Chiesa picked up the pieces and bent a fine effort into the far corner before celebrating his second goal in three games wildly in front of the Italian fans at that end.
Spain seized control of the ball and mounted pressure on Italy's goal, with Oyarzabal unable to glance a header home from close range before Olmo fizzed a shot just past the upright.
Italy's defenders relished the challenge, with Chiellini celebrating each block and tackle, but with 10 minutes left, eventually Euro 2020 top scorers Spain found a way through. And it was sub Morata who struck, playing a one-two with Olmo before beating Donnarumma.
Inspired, Morata teed Gerard Moreno up for a shot over the bar as Spain pushed for a second but the game was forced into extra-time, where Luis Enrique's side maintained the upper hand, with Donnarumma forced to parry Olmo's low free-kick and then punch Moreno's cross, sparking scrambles on both occasions.
After the break, it was Italy with the half-chances. Domenico Berardi had a strike blocked by Laporte and then hit the net after clearly straying offside, before Andrea Belotti's through ball for Berardi was crucially cut out by an out-stretched heel of Pau Torres, as the tie went to penalties.
Spain had beaten Switzerland with spot-kicks in the previous round but failed twice from 12 yards in that match and did the same at Wembley. Dani Olmo failed to capitalise on Manuel Locatelli's miss with the first effort of the shoot-out but there was no reprieve for Morata.
It was left to Jorginho to confidently sit down Simon, stroke his penalty into the net and send his country into Sunday's final.
Italy boss Roberto Mancini: "We're delighted to have been able to provide this wonderful evening's entertainment to the Italian people. We still have one game to go and we want to do exactly that if possible. We knew it was going to be a very tough match because in terms of ball possession, Spain are the best around and they would cause us problems.
"We had to dig in when we needed to. We tried to score and create opportunities when we needed to, it was a very open match and there were some issues because we didn't have too much possession. However, we wanted to make it into the final and we kept trying right until the end. As ever, penalties are a lottery but I really want to take my hat off to Spain, they are a wonderful team.
"I thank the players because they believed from day one that we could produce something incredible. We haven't yet done everything we need to, there's still one step to go and now we have to rest up because this really was very challenging."
Spain boss Luis Enrique: "It's not a sad night for me, not at all. Of course there is disappointment but that's football. You have to be able to win and lose. We were very pleased to win the shoot-out in the quarter-finals but we have to congratulate our opponents. I said at the start we were one of eight teams that could win the title, I wasn't wrong about that. We go home knowing we competed and were one of the best teams at the competition.
"I'd say it would be an A- for my players, an A+ if we'd won. We've been speaking about how we'd like to play at the Euros for many months, the players bought into it, I have no complaints. We've shown we're a team and we're going to continue doing that.
"Morata has gone through some tough times during this competition but he was brilliant, he created a lot of uncertainty in the Italian ranks, he scored, he was excellent. I haven't been able to see him because he went to doping control but I will go and see him now."
- Italy have now reached their 10th major tournament final (World Cup/Euros), progressing to the final of the European Championships for the fourth time (also 6 World Cup finals). Indeed, only Germany (14) have participated in more major tournament finals amongst European nations than Italy (incl. Euro 2020).
- Spain have failed to progress from a semi-final at a major tournament (World Cup/Euros) for the first time in their history, having reached the final from each of their previous five semi-final appearances.
- Italy versus Spain (10) became the most played fixture amongst European nations in major tournament history (Euros/World Cups).
- Alvaro Morata has scored more goals at the European Championships than any other Spain player (6), overtaking Fernando Torres' five goals. In fact, Morata became the first ever Spanish player to score for club and country at Wembley Stadium.
- Spain's Pedri became the first European player in major tournament history (World Cup/Euros) to start as many as six such matches at the age of 18 or below.
Italy will play either England or Denmark in the Euro 2020 final on Sunday at Wembley at 8pm.