Well beaten for the opening goal but redeemed himself with three stunning second-half stops to deny Bradley Johnson, Nathan Redmond and Leroy Fer.
Tasked with keeping Johan Elmander quiet, the defender struggled to deal with the big striker's strength and aerial presence.
Made a number of vital blocks as Cardiff looked to protect their lead in the dying moments.
Solid if unspectacular, the defender performed well and coped with Norwich's second-half assault on the home goal.
A lack of communication with Craig Noone led to the opening goal but the ex-Manchester United man recovered well and attempted to get forward at every opportunity. Substituted for Theophile-Catherine in second half.
Always looked to bomb forward in search of a shooting opportunity and provided consistent support to Craig Bellamy and Kenwyne Jones. Substituted for Aron Gunnarsson in second half.
Wasted a free kick and dragged a shot wide before being substituted for Wilfried Zaha in the 37th minute.
Tasked with protecting the back four and did so admirably, as he often dropped deep to double up on the Norwich forwards.
Caught out by Norwich's first but recovered well and provided a constant attacking threat from midfield. Was booked, however.
Gave his side the lead just 60 seconds after Bellamy's goal with a close-range volley. A fine debut from the Trinidadian.
Repeatedly dropped deep in search of the ball and equalised early in the second half, as he slotted home from close range. Headed off the line in the dying moments of the second half.
Will be disappointed to have conceded two goals, with both efforts well within his reach.
Captained Norwich with aplomb but could not steer his side to a clean sheet as he found his defence shellshocked after conceding twice in two minutes during the second half.
Struggled to cope with the pace of Wilfried Zaha and Craig Bellamy, as well as the aerial threat of Kenwyne Jones.
Booked for a rash tackle on Craig Bellamy and was consistently outpaced by the Welshman.
Supplied the cross for Snodgrass to make it 1-0 but struggled to deal with Cardiff's pace going forward.
Looked to link defence and attack quickly but struggled to make any real impact. Booked for a reckless slide tackle on Jordan Mutch,
Fought a running battle with Fabio but struggled to better the Brazilian and subsequently saw his attacking threat limited. Substituted for Nathan Redmond as the clock ticked down.
Forced a stunning stop from David Marshall but was substituted in the second half, with Leroy Fer his replacement.
Opened the scoring from close range after a superb cut-back from Martin Olsson but was denied a penalty in the second half.
Ran himself into the ground up front and chased every lost cause but struggled to test Marshall in the final third.
Occupied the defence well and offered an aerial threat but spurned a number of clear-cut chances. Replaced by Ricky van Wolfswinkel in the second half.
K. Théophile Catherine
Came on for Fabio in second half and performed well in defence.
Replaced Jordan Mutch in the second half but struggled to have any impact, with Norwich chasing an equaliser.
Introduced for Whittingham in the first half and immediately changed the game with his pace and trickery. Provided the pass for Bellamy's equaliser.
Thrown on in the final minutes as Norwich chased an equaliser and tricked his way into the box on a number of occasions, though he could not create an equaliser.
Introduced in the second half for Johnson and forced a brilliant stop from Marshall.
R. van Wolfswinkel
Much like Redmond, the striker was introduced as the Canaries went in search of a late leveller but could not breach Marshall and his defence.