Match ends, Bristol City 1, Norwich City 3.
Norwich City extended their unbeaten run to five Championship games as they beat Bristol City in an entertaining encounter at Ashton Gate.
Teemu Pukki scored two early goals for the Canaries to set the pace for a pulsating first half, with Jack Hunt pulling one back shortly after the Finn's second strike.
Both goalkeepers then made excellent saves before Emiliano Buendia's wonderfully-taken goal saw Norwich lead 3-1 at the break.
Chris Martin hit the post from 25 yards for the hosts after an hour before Nakhi Wells missed a 75th-minute penalty, awarded for a foul by Jacob Sorensen, as he embarrassingly tried to dink the ball down the middle over the goalkeeper but put it over the bar.
The win moved Norwich into fourth place, while Bristol City drop into 10th position.
The Robins struggled to contain Norwich's movement up front as time and again the likes of Pukki got in behind their centre-backs.
He got on the end of Marco Stiepermann's through-ball and fired under Daniel Bentley for the early opener before his excellent run was picked out by Jacob Sorensen's pass from halfway and his shot just inside the penalty area went in via a deflection off Tomas Kalas to double the lead.
City responded instantly as Jamie Paterson broke down the left and had a shot palmed away by Tim Krul, but the forward cleverly played the rebound across the face of goal for the onrushing Hunt to fire in from close range.
Pukki went close again before City had two good chances to level through Wells - the striker curling a shot from the edge of the box just wide before a great first touch from a Hunt cross had put him in a perfect position to score but he fluffed his chance.
Krul was forced into a fine diving save 10 minutes before the break as Martin rose highest to head a corner towards the bottom corner and soon after Bentley did well to block Buendia's effort with his face at the other end after the Argentine was found by Przemyslaw Placheta.
Both sides seemed content to consolidate their positions to half-time, but Buendia produced a moment of class to score Norwich's third as he superbly brought down Ben Gibson's long ball and shot into the bottom corner with the home side's defence caught out of position.
Norwich had further off-target efforts from Stiepermann and Lukas Rupp before Bristol City switched to three centre-backs from a back four - a decision which seemed to shore them up defensively.
Martin's effort against the woodwork came just a couple of minutes after the change, while Wells had a weak shot saved from a floated free-kick into the area before his penalty miss and he was taken off soon after.
The Canaries could have added a fourth as the half went on but Bentley did well to save from Placheta and Buendia as the visitors threatened until the end.
Bristol City manager Dean Holden told BBC Radio Bristol:
"It was a poor start, defensively right throughout the team in the first half we were too open, we gave them too many opportunities - two of the goals are long straight passes right down the middle of our back line.
"We got back into it with the goal, I thought we had the momentum in the first half, I thought we were in control of the game. They've got good players who'll give you problems, but to concede when we did right on half-time was a sucker punch.
"It was a wasteful penalty, we've spoken about it after the game. He puts them away in training every day, he practises every day, he's not scored that one and we have to move on."
Norwich City manager Daniel Farke told BBC Radio Norfolk:
"It was a good performance, we were pretty clinical in front of the goal in a top-class first half.
"With the three goals we scored, we spoke about wanting to improve our efficiency and today was three brilliant team goals and a fantastic final pass for the first goal by Marco Stiepermann, what a pass it was.
"Overall it was a well-deserved win, we could have scored a fourth goal."
- 23MooreSubstituted forBakinsonat 57'minutes
- 29BruntSubstituted forSemenyoat 76'minutes
- 21WellsSubstituted forDiédhiouat 78'minutes
- 1KrulBooked at 73mins
- 34GibsonBooked at 66mins
- 19Lungi SørensenBooked at 60mins
- 7RuppBooked at 77mins
- 18StiepermannSubstituted forMcLeanat 72'minutes
- 11PlachetaSubstituted forMumbaat 90+1'minutes
- 22PukkiSubstituted forHugillat 84'minutes
- Jarred Gillett
- Shots on Target
Second Half ends, Bristol City 1, Norwich City 3.
Foul by Jordan Hugill (Norwich City).
Zak Vyner (Bristol City) wins a free kick in the attacking half.
Attempt blocked. Chris Martin (Bristol City) right footed shot from outside the box is blocked. Assisted by Antoine Semenyo.
Substitution, Norwich City. Bali Mumba replaces Przemyslaw Placheta.
Attempt missed. Emiliano Buendía (Norwich City) right footed shot from outside the box misses to the left. Assisted by Oliver Skipp.
Jordan Hugill (Norwich City) wins a free kick on the left wing.
Foul by Zak Vyner (Bristol City).
Attempt saved. Jamie Paterson (Bristol City) right footed shot from outside the box is saved in the centre of the goal. Assisted by Tyreeq Bakinson.
Foul by Emiliano Buendía (Norwich City).
Tomas Kalas (Bristol City) wins a free kick in the defensive half.
Attempt saved. Emiliano Buendía (Norwich City) left footed shot from the centre of the box is saved in the centre of the goal. Assisted by Przemyslaw Placheta with a cross.
Grant Hanley (Norwich City) wins a free kick in the defensive half.
Foul by Chris Martin (Bristol City).
Foul by Emiliano Buendía (Norwich City).
Jay Dasilva (Bristol City) wins a free kick on the left wing.
Attempt missed. Grant Hanley (Norwich City) header from the right side of the six yard box misses to the right following a corner.
Substitution, Norwich City. Jordan Hugill replaces Teemu Pukki.
Corner, Norwich City. Conceded by Jack Hunt.