Substitute Mario Vrancic curled home a superb free-kick with virtually the last kick of the game to earn leaders Norwich a point from a 2-2 draw with Sheffield Wednesday.
The visitors looked like they would come away from Carrow Road with a shock win after hitting back to lead 2-1, but the Sky Bet Championship leaders are renowned for their late comebacks and pulled off another to move five points clear of Sheffield United and Leeds with just three games remaining.
The Canaries had taken the lead in the 19th minute through Marco Stiepermann but the Owls were always in the game and equalised just past the half-hour mark when Fernando Forestieri netted with a brilliant long-range effort.
When Steven Fletcher scrambled the ball home early in the second half with what appeared to be his arm Daniel Farke’s men were under pressure, but they produced a typically spirited response to force a dramatic draw which all but extinguished the visitors’ outside play-off hopes.
Knowing they needed a maximum of six points from their final four games to guarantee promotion, the Canaries were quickly into their stride, with top scorer Teemu Pukki beating a couple of defenders in the box before firing just wide.
A couple of minutes later keeper Cameron Dawson, a late replacement for Keiran Westwood, did well to punch Stiepermann’s fiercely struck free-kick away after being booked for handling the ball outside the area.
Wednesday added to the spectacle by making a game of it and had the ball in the net in the 15th minute after a slick move, but the goal was rightly ruled out for offside.
It was Norwich who were doing most of the attacking, however, and they went close again a minute later when Onel Hernandez saw his low shot saved by Dawson when a square ball to an unmarked Pukki would have left a tap-in.
But a home goal was coming. Stiepermann worked himself into some space on the right-hand edge of the box after an interchange with Hernandez and let fly from around 20 yards, with his low shot beating an unconvincing dive from Dawson and finding the bottom corner.
If the hosts thought that goal would open the floodgates they had another thing coming, with the Owls continuing to have plenty of the ball and equalising in sensational fashion in the 33rd minute.
There seemed to be little danger when Forestieri picked up possession midway inside the City half but once he had a sight of goal it was a different matter, with the Argentinian unleashing a wonderful shot from all of 35 yards into the top corner, giving Tim Krul no chance.
Norwich quickly regrouped and almost regained the lead on the stroke of half-time, with Max Aarons bursting into the box after a backheel from Hernandez and bringing a good close-range save out of the busy Wednesday keeper.
Ben Godfrey went close with a header from a corner as Norwich resumed on the front foot although it needed a brilliant reaction save to keep out another Forestieri piledriver a couple of minutes later after the ball had broken for him just outside the area.
The visitors then stunned the home faithful by taking the lead in the 53rd minute with a controversial effort from Fletcher.
After being picked out at the back post by a fine inswinging cross from Liam Palmer, the Scotland international appeared to bundle the ball past Krul with his arm, but referee Geoff Eltringham saw nothing wrong and the goal stood.
Norwich’s response was a typically spirited one and midway through the second half they almost restored parity, with Kenny McLean only just off target with a header from an Aarons cross.
Fletcher then stung Krul’s palms with another stinging drive as the game ebbed and flowed, but Norwich struggled to create clear-cut chances as the Wednesday defence held firm.
Bu the hosts won a free-kick on the edge of the area in the final minute of stoppage time and Vrancic curled it home to earn the Canaries a precious point.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to TO_UPDATE_FROM_FLEXI_UI. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.