Jak Alnwick 7
Made a really good save early on from Gabriel Sara and was generally very comfortable with his feet once again. Made a good save from Danny Batth's header late on, but did parry Jonathan Rowe's shot into Adam Idah's path.
Mahlon Romeo 6
Cardiff did have a bit of trouble down his flank on occasion, but Perry Ng is a big miss and Romeo did a decent enough job deputising in his stead.
READ MORE: Canaries produce late turnaround as Bluebirds crumble to defeat
Dimitrios Goutas 7
Put in a monster tackle to stop one Norwich break and it got the crowd roaring. Was done by Rowe before Idah knocked home a third, but he was scrambling.
Mark McGuinness 8
Like his centre-back partner, was as solid as a rock and put in a number of big tackles and won aerial duels. Made a goal-saving block from Christian Fassnacht just after the break, too.
Jamilu Collins 6
Had a bit of a shaky start but really grew into it. His clipped cross for Robinson's goal was sublime. Was pinned back late on but did well enough.
Manolis Siopis 6
Made a crucial interception early on to stop a dangerous cross, but got skinned by Jonathan Rowe on one occasion. Generally good, but a few errors.
Joe Ralls 7
Has such a nice partnership growing with Siopis in the middle. Was careful in possession and kept things ticking pretty nicely in there.
Josh Bowler 8 (star man)
Was the standout. Looked so dangerous running at Przemyslaw Placheta and caused him all sorts of trouble. Let off a number of dangerous shots and drilled home his first-half chance.
Callum Robinson 8
Really coming into his own at the moment. Did all the work to set up Bowler's goal before outleaping his marker to score one himself. Good to see him enjoying himself again.
Karlan Grant 6
Up and down from the winger. Got in so many good positions and skinned his marker time and time again, just that end product - be it a shot or cross - was just off the mark. Had a great chance to score in the second half but fluffed his lines in a one-v-one.
Yakou Meite 6
Was always an outlet for City's long balls forward and battled well against Danny Batth. Was just a yard or two off it when it came to latching on to crosses, positionally.
Subs:
Rubin Colwill (Robinson 71) 6 - Went on one bursting run and hit a nice cross - but other than that was reduced to very little.
Ollie Tanner (Bowler 71) 6 - Had one or two link-ups with Colwill but other than that pretty quiet.
Ryan Wintle (Ralls 71) 5 - Gave away a free-kick in a dangerous area and was booked, then unfortunately had the ball bounce off him and into his own net.
Etete (Meite 80) NA