A youthful Spain brought European champion Italy's record 37-match unbeaten run to a grinding halt with a 2-1 win in the Nations League semifinal at the San Siro Wednesday.
Manchester City's Ferran Torres scored twice in the first half to leave Italy trailing. Things got worse for the host as it had to play the entire second half with 10 men after captain Leonardo Bonucci was sent off.
However, Italy showed real determination as it sought to avoid a first loss since a September 2018 defeat by Portugal.
"This is what matches are like, sometimes certain episodes can influence them," Italy coach Roberto Mancini said.
"This is a disappointment. We should have stayed with 11 men, we made a mistake that you can’t make at this level," he added.
Spain will face the winner of Thursday's semifinal between France and Belgium in Sunday's decider.
Torres put Spain ahead in the 17th minute, steering a left-wing cross from Mikel Oyarzabal past Italy keeper Gianluigi Donnarumma into the far corner.
Donnarumma, booed by AC Milan fans angered at his recent move from the club to Paris Saint-Germain, nearly gifted Spain a second when he fumbled a harmless Marcos Alonso effort against the post but Bonucci scrambled the ball clear.
Any lingering questions about the importance of the match had been blown away by the blistering start and it was by no means one-way traffic, as Italy started to open up the Spanish defense.
Federico Bernardeschi went close to an equalizer with a low drive from the right which Spain keeper Unai Simon pushed against the post and Lorenzo Insigne missed a great chance, firing wide when in space on the edge of the box.
The Azzurri, who beat Spain on penalties in the Euro 2020 semifinal in July, went a man down in the 42nd minute when Bonucci was sent off for a second yellow card after elbowing Sergio Busquets.
Torres sent Luis Enrique's side in with a two-goal lead at the break when he was left unmarked to head in another fine cross from Oyarzabal.
Italy brought on Giorgio Chiellini at the break, the veteran defender and leader having been a surprise omission, and despite Spain playing with real swagger, the Azzurri stayed in the game.
Spain had given a debut to Barcelona's 17-year-old midfielder Gavi, who became its youngest ever player after just three starts for his club – but there was no hint of his inexperience in a confident and composed performance.
Enrico Chiesa was the source of Italy's brightest moments and he hit the post from a tight angle in the 61st minute
Oyarzabal headed wide after excellent work from another teenager, winger Yeremi Pino, and Marcos Alonso should have sealed the win in the 78th minute but his low shot was well saved by Donnarumma.
Italy ensured a tense end to a quality match when it pulled a goal back seven minutes from the end, as Chiesa took advantage of hesitant Spanish defending, broke from the halfway line and slipped the ball to substitute Lorenzo Pellegrini to convert.
But Italy's run was over and with it ended the dream of a Nations League title on home soil to follow its Euro triumph.
For Spain though, the revenge for the Wembley loss was sweet.
"We knew it was a special game, we went out in the semifinals of the Euros and what better way to beat them at home in other semifinals," Torres said.