REPORT: CITY 3-2 NEWCASTLEMARTIN Olsson was City's hero as his last-minute strike earned a remarkable 3-2 victory for Alex Neil's side over Newcastle United.
The Canaries twice held the lead thanks to goals from Timm Klose and Dieumerci Mbokani, but Aleksandar Mitrovic's two efforts - the second a penalty four minutes from the end - pegged them back.
Olsson's winner, however, finally finished off their relegation rivals, sending the crowd into ecstasy after a topsy-turvy afternoon at Carrow Road.
Neil made three changes to his side from the 1-0 victory over West Bromwich Albion prior to the international break, with captain Russell Martin absent from the matchday squad.
Andre Wisdom replaced him at right-back for his first league appearance since December 12, with Ryan Bennett and Steven Naismith also coming into the eleven. Nathan Redmond was named among the substitutes.
Carrow Road was a cauldron of noise before kick-off, with 25,000 clap banners distributed around the home areas ahead of the match.
Newcastle settled into it faster, however, and Papiss Cisse looped a header over John Ruddy's bar from Jonjo Shelvey's cross for the first chance after nine minutes.
The Canaries got their first effort on target two minutes later as Dieumerci Mbokani robbed Chancel Mbemba of possession before finding Naismith, but Karl Darlow saw his long-range effort all the way.
Mbokani, who had made a lively start to the game, then had the ball in the net on 17 minutes - but the striker was flagged offside after Jonny Howson's surging run and cross.
City were now the side on the ascendancy and on the half hour mark Darlow was stretched into a save when Mbokani laid the ball off for Robbie Brady, who saw his right-footed effort blocked.
Three minutes later, Darlow was called into a much more impressive stop - Naismith pulled the ball back for Mbokani, and the frontman's low effort was somehow kept out by the Magpies' custodian.
Newcastle came back into the game as the half wore on, but in stoppage time the Canaries took the lead.
Mbokani was fouled on the right, and Brady's superb delivery was met by Klose six yards out for his first City goal - a flicked header into the corner.
HALF-TIME: Norwich City 1-0 Newcastle United
Newcastle boss Rafael Benitez changed the shape of his team for the second half, bringing on striker Ayoze Perez for midfielder Cheick Tiote.
Six minutes into the second half, they missed a fine opportunity to draw level - John Ruddy parried Andros Townsend's drive, and then Papiss Cisse fired wide when it looked easier to find the target.
City had shouts for a penalty rejected when Matt Jarvis fell in the area, but referee Mike Dean was having none of it.
Newcastle were the better team and had three strikers on the pitch following the introduction of Mitrovic and he scored a deserved leveller on 71 minutes.
The Serbian striker nodded home a cross from the right, with the aid of a deflection which diverted the ball over Ruddy and in.
The visitors' joy was short-lived however - City immediately got themselves back on the offensive, and Mbokani turned into the area on the left side and rocketed his shot into the top corner beyond Darlow.
Wes Hoolahan came on for Naismith with ten minutes left on the clock, but with just four minutes left Newcastle were awarded a penalty after a handball from Gary O'Neil.
Mitrovic scored from the spot, setting a frantic finale - but the story wasn't finished there.
Olsson popped up in stoppage time, drilling home and sending the whole ground into delirium - earning the Canaries a sensational three points.
FULL-TIME: Norwich City 3-2 Newcastle United
GOALS: Canaries: Timm Klose (45), Dieumerci Mbokani (75), Martin Olsson (90) - Magpies: Aleksandar Mitrovic (71, pen 86)
NORWICH CITY: Ruddy; Wisdom, Bennett, Klose, Olsson; Jarvis (Redmond 75), Howson, O'Neil (c), Brady; Naismith (Hoolahan 81); Mbokani (Jerome 85). Subs not used: Rudd (GK), Bassong, Bamford, Mulumbu.
NEWCASTLE UNITED: Darlow; Janmaat, Taylor, Mbemba, Anita (Mitrovic 62); Shelvey (c), Tiote (Perez 45); Townsend, Wijnaldum, Sissoko; Cisse. Subs not used: Woodman (GK), De Jong, Lascelles, Riviere, Sterry.
REFEREE: Mike Dean