Alex Smithies 7
Commanded his area well throughout the match. Had one dicey moment when he appeared to bring down Callum O'Hare but made a world-class save to deny Viktor Gyokeres late on.
Perry Ng 6
Got Cardiff out of trouble once or twice with fleetness of foot with the ball. Another assured performance.
Aden Flint 6
Got dragged out of defence a couple of times and his distribution was off early on. Improved in the second half, though.
Mark McGuinness 6
Made a couple of really good headed clearances.
Cody Drameh 7
As solid as you'd expect from him. Made one lung-bursting run to set up Jordan Hugill, but he squandered the chance.
Will Vaulks 6
Played a gorgeous ball over the top for Max Watters in the first half and was generally neat enough. Lovely reverse pass for Joel Bagan's goal.
Eli King 6
Calm enough with the ball at his feet. Was very risk averse, through, and went backwards too often, but it was his first start, in all fairness. Subbed.
Ryan Wintle 7
Made a couple of crucial defensive interventions and was calm and composed with the ball at his feet. A really tidy outing, even if he picked up a booking.
Joel Bagan 8 (star man)
The brightest spark. Exuding so much more confidence with the ball at his feet and far more assured defensively. His goal was excellent.
Isaak Davies 6
Didn't cover himself in glory early on and was muscled off the ball a little too easily at times. But really made up for it after the break with some great runs.
Max Watters 4
Had two decent chances, both of which were saved, but his play apart from those two flashpoints was sub-par. Hooked after 37 minutes.
Subs
Jordan Hugill (on for Watters 37) 7 - Made a massive difference when he came on. Gave City a platform and set up Mark Harris for his goal.
Tommy Doyle (on for King 51) 6 - Ran around until his socks fell off. Needed his energy in there late on.
Mark Harris (on for Davies 80) 7 - A coolly-taken goal by the forward to make sure of the win.
For the latest Cardiff City news and analysis delivered straight to your inbox, you can sign up for our newsletter here.