A late goal from Borja Sainz wasn't enough to take away a point from Bristol City in a Friday night Sky Bet Championship fixture.
Mark Sykes and Nahki Wells put the hosts 2-0 up in the first half and they were able to hold onto the lead to take all three points in the tie.
Ahead of the game, Johannes Hoff Thorup made a trio of changes to his side that faced Sheffield Wednesday earlier in the week, bringing George Long, Jacob Sørensen and Josh Sargent back into his starting 11.
Long returned to the squad following a spell out with concussion and the US international was included again after being rested for the tie three days prior.
Marcelino Núñez was also back available for selection after recovering from a hamstring problem.
The Canaries kicked off the match and had the first chance of the meeting.
A free-kick won by Emiliano Marcondes led to a charge forward from Sainz, the Spaniard looking to set up Sargent in the box, but his cross narrowly evaded the Norwich striker.
From the resulting goal-kick, Bristol City had the lead.
A ball down the right found Sykes on the edge of the area, the forward shooting and finding the back of the net to give the hosts the lead after six minutes.
Bristol City stopper Max O'Leary was soon forced to make a double save in quick succession for efforts from Marcondes and Callum Doyle.
Sainz then immediately wanted in on the action, hitting the post shortly after, following a link-up with Sargent.
The lead was the doubled by the hosts when Norwich were dispossessed deep into their half, Joe Williams finding Wells for Bristol City's second.
Long made a fine double save with 10 minutes left of the half to prevent Max Bird finding a third for Bristol City.
The Canaries were close to pulling one back before the break, after a cross from Kellen Fisher travelled past a host of red shirts, Sainz just inches away from tapping into the back of the net.
Norwich started the second half with plenty of energy, both Doyle and Ante Crnac taking aim at goal but unable to find the target.
Sargent had a powerful shot punched away by O'Leary with 15 minutes left on the clock.
Down the other end, substitute Scott Twine went for goal on the edge of the area but Long was able to collect with ease.
Norwich then pulled one back with less than 10 minutes left on the clock, Doyle finding Sainz with a cross and the Spaniard firing home to make it 2-1.
The match closed with a free-kick from substitute Núñez, whose effort evaded the wall and narrowly missed the target.
The Canaries are back in action after the international break when they host West Brom at Carrow Road on Saturday, March 29.
Bristol City: O'Leary; Vyner, Dickie, Roberts; Pring, Bird (McGuane 80), Williams (Earthy 58), Knight (C), Sykes (Bell 80); Mehmeti (Twine 70), Wells (Armstrong 58).
Unused subs: Bajic, Hirakawa, Cornick, Morrison.
Goals: Sykes (6), Wells (23)
Bookings: Knight (34), Williams (37), O'Leary (90+1), Dickie (90+4)
Norwich City: Long; Fisher (Stacey 68), Duffy, Córdoba (Núñez 53), Doyle; Sørensen (McConville 83), McLean (C), Marcondes (Slimane 68); Sainz, Crnac (Schwartau 68), Sargent.
Unused subs: Reyes, Wright, Forson, Hernández.
Goals: Sainz (82)
Bookings: Fisher (44)
HT: 2-0
FT: 2-1
Venue: Ashton Gate
Referee: Sam Allison
Attendance: 21,237