Aleksandar Trajkovski scored in the second minute of stoppage time to stun the European champions.
As soon as the goal went in, North Macedonian players and support staff broke into wild celebrations even as the Italian players watched in horror.
North Macedonia will now take on Portugal in Porto on Tuesday for a chance to be in Qatar in November.
The European Champions registered 16 shots on goal during the hugely dominant 45 minutes, the best chance falling to Nicolo Barella.
Stole Dimitrievski – manning the North Macedonia goal – came out wide to receive a ball and played it straight to Barella on the edge of the box, but his weak effort gave Dimitrievski time to scramble back to his goal and retrieve the ball.
Despite hanging on for the majority of the first half, North Macedonia showed encouraging signs going forward, but weren’t clinical enough in the final third.
The second period was much the same, perhaps even more one-sided than the first. Italy had chances through Domenico Berardi, Ciro Immobile and Marco Verratti, but couldn’t find their way past a resilient North Macedonia defence.
Mirroring the first period and managing another 16 shots in the second half, Italy only managed to register five of those on target, which proved to be a big problem as they tried to look for ways to break the deadlock.
With minutes to go and into injury time, an unlikely North Macedonia counter attack threatened the Italian defence, before Trajkovski pulled the trigger on a speculative low-driven shot from 25 yards out, beating Gianluigi Donnarumma at the far post.