Famara Diedhiou celebrated his 26th birthday with a goal as Bristol City prevented Norwich from going back to the top of the Sky Bet Championship after a 2-2 draw at Ashton Gate.
Marco Stiepermann fired the visitors ahead with an exquisite left-footed curler from the right corner of the box in the 39th minute, nestling the ball just inside the far post after good hold-up play by Teemu Pukki.
But Diedhiou equalised in first-half stoppage-time, netting right-footed from 15 yards with the aid of a deflection after Andreas Weimann had set up the chance.
Callum O’Dowda put Bristol City in front after 53 minutes, firing in off the crossbar from a fine through ball by Marlon Pack.
But Norwich hit back in the 78th minute when full-back Max Aarons turned up at the far post to head in a cross from the right by substitute Onel Hernandez.
The game began at a frantic pace, despite a swirling wind and driving rain. Both teams looked to pass the ball quickly on the slick surface and an open contest appeared to be developing.
Norwich skipper Alex Tettey had the first effort at goal after 10 minutes but his low shot from distance passed harmlessly wide.
Diedhiou was looking sharp up front for the Robins and his 20th-minute drive from 25 yards brought a low save from Tim Krul.
Norwich then created the first clear chance on the break, Pukki breaking clear down the left and cutting inside only to see his low shot from an angle well saved by Niki Maenpaa.
Emiliano Buendia volleyed narrowly wide from 20 yards for Norwich as they threatened to take a grip on the game.
But Bristol City stormed back and it took some brilliant goalkeeping from Krul to keep the visitors on level terms.
In the 31st minute he tipped over a Jamie Paterson volley after a penetrating run from O’Dowda. And when the resulting corner was played into the path of Josh Brownhill 30 yards out, his superb strike brought an equally fine save from Krul diving to his right.
Stiepermann’s sweetly-struck goal looked set to give Norwich the edge at the break, but Diedhiou’s reply was no more than the hosts deserved.
Maenpaa saved from Pukki and Krul from Diedhiou before O’Dowda’s strike put the home side in front.
Moments earlier Norwich looked fortunate not to be reduced to 10 men when Tettey, already booked, pulled back Pack to prevent a dangerous break.
Roared on by an appreciative home crowd, Bristol looked to make the game safe and Brownhill was inches over with another long-range strike.
Krul saved at the second attempt from Brownhill with Diedhiou looking to latch onto the rebound, but Norwich held out and finished the game strongly.
ga('create', 'UA-72310761-1', 'auto', {'name': 'pacontentapi'});
ga('pacontentapi.set', 'referrer', location.origin);
ga('pacontentapi.set', 'dimension1', 'By Press Association Sport staff');
ga('pacontentapi.set', 'dimension2', 'e8080c03-247d-4ac0-8bb5-ceb5af2cf9ad');
ga('pacontentapi.set', 'dimension3', 'paservice:sport,paservice:sport:club-news,paservice:sport:football,paservice:sport:match-reports');
ga('pacontentapi.set', 'dimension6', 'story');
ga('pacontentapi.set', 'dimension7', 'composite');
ga('pacontentapi.set', 'dimension8', null);
ga('pacontentapi.set', 'dimension9', 'sport:football');
ga('pacontentapi.send', 'pageview', { 'location': location.href, 'page': (location.pathname + location.search + location.hash), 'title': 'Norwich hit back to take point at Bristol City'});