North Macedonia produced one of the biggest upsets in World Cup qualifying history as Aleksandar Trajkovski scored an injury-time stunner to knock Euro 2020 champions Italy out of contention.
The visitors produced a brilliant defensive display, keeping their illustrious opponents at bay before striking late on to set up an encounter with Portugal for a spot at the showpiece in Qatar later this year.
Italy dominated the early stages without creating too much but should have taken the lead when Stole Dimitrievski carelessly gave the ball away to Domenico Berardi, but the Sassuolo winger couldn't connect with enough power and the goalkeeper managed to scramble back and recover.
North Macedonia were chasing shadows despite staying level and Milan Ristovski had the chance to burst clear following a mistake in possession from Gianluca Mancini, but Alessandro Florenzi recovered to make an excellent challenge before a shot could be taken.
The visitors continued to frustrate their hosts well into the second half, with Berardi again being wasteful with two chances in quick succession.
However, the European champions continued to be held at an arm's length by North Macedonia, whose defenders threw themselves at every shot, making a remarkable amount of blocks as forwards Lorenzo Insigne and Ciro Immobile were silenced.
North Macedonia then produced their moment of magic. On the break, Trajkovski worked some pace on the edge of the box and sent a terrific shot into the far corner past an unsettled Gianluigi Donnarumma to steal a famous win for North Macedonia.
It's the second time in succession that Italy have failed to qualify for the World Cup, despite proving their world-class credentials with victory at Euro 2020.
Here are your Italy player ratings.
ITALY PLAYER RATINGS - WORLD CUP QUALIFYING PLAYOFF SEMI-FINAL
1. Goalkeeper & defenders
Gianluigi Donnarumma (GK) - 3/10 - Just the one comfortable save to make in the first half. Caught out by Trajkovski's strike and will cop some criticism for not being set.
Alessandro Florenzi (RB) - 6/10 - Great recovery tackle to stop North Macedonia from taking a shock lead following Mancini's mistake.
Gianluca Mancini (CB) - 5/10 - In for the injured Leonardo Bonucci. Nervy moment when he lost possession to Mistovski, but Florenzi's challenge bailed him out.
Alessandro Bastoni (CB) - 6/10 - Brought the ball out nicely from defence. Largely decent.
Emerson Palmieri (LB) - 6/10 - Asked plenty of questions on the left. Some crosses led to penalty box scrambles and a few were poor.
Nicolo Barella (CM) - 5/10 - Not at his best, despite oozing class when on the ball, and came off with 15 minutes of normal time to go.
Jorginho (CM) - 7/10 - Lack of pace got exposed a few times on the break but was definitely one of the better performers in a frustrating Italy performance.
Marco Verratti (CM) - 8/10 - Absolutely awesome. Consistently won the ball back for Italy, dribbled past the hapless opposition midfield with ease and his movement off the ball was immense. Let down by his teammates.
Domenico Berardi (RW) - 4/10 - Should have stuck Italy in front but his shot was weak with the goal at his mercy. Had a few more good opportunities which he wasted.
Ciro Immobile (ST) - 4/10 - Not at his best. Had one opportunity to run in behind but didn't have the pace to get away. Saw six shots blocked and just couldn't get any space to work with.
Lorenzo Insigne (LW) - 4/10 - Tested Dimitrievski with a quick free kick. Successfully nullified by North Macedonia and brought off just after the hour.
Giacomo Raspadori (LW) - 6/10 - Gave more impetus to Italy's attacks than Insigne. Sent a whizzing shot just over the bar.
Sandro Tonali (CM) - 4/10 - Only completed 50% of his passes after coming on.
Lorenzo Pellegrini (CM) - 4/10 - Not that involved after coming on, one dribble aside.
Joao Pedro (ST) - 2/10 - Had just two touches.
Giorgio Chiellini (CB) - 1/10 - Came on and saw his side go behind.