Ryan Allsop 6
Made a fantastic save to deny Conway early on and was good with his feet again. Not a lot he could do for the goals. Good with his feet again.
Mahlon Romeo 5
Not like him, but he lost the ball under little pressure at times, and allowed Bristol City to break. Got into it a bit later with some late breaks.
Perry Ng 5
Moved over to left-back early on and was largely comfortable. Be good to see him at centre-back properly, though.
READ MORE: Bristol City 2-0 Cardiff City: Bluebirds' derby woes continue as they are well beaten at Ashton Gate
Cedric Kipre 5
He is all-action at the back. Cardiff need his height at strength but at times, like others, was sloppier than usual. Had a good opportunity to score in the first half. Lost Rob Atkinson for his headed goal.
Joel Bagan NA
Rotten luck for the youngster. Clashed heads with Alex Scott just minutes into the game and was replaced by Jack Simpson.
Ryan Wintle 4
Another who you don't expect to be sloppy but he was at times. Looked a little bit fazed by the occasion at times.
Andy Rinomhota 4
Didn't see a great deal of him on the ball and had a lot of defensive duties he had to carry out. A quiet one.
Romaine Sawyers 5
Started quietly, but when Cardiff had positive patches he was invariably in the middle of them. Wasn't afforded enough opportunities to pull the strings.
Callum O'Dowda 5
Struggled to impose himself on things as he usually would. Being greeted by boos every time he touched the ball didn't help. Put in a lovely cross for Ojo, who scored but was offside.
Max Watters 4
Did everything well enough bar putting the ball into the back of the net. Had an incredible chance to score a 1v1, but couldn't convert it.
Sheyi Ojo 5
Wasn't given too much opportunity to stretch his legs. Scored but was flagged for offside.
Subs
Jack Simpson (Bagan 8) 5 - Did a decent enough job for the most part. Was beaten by Tommy Conway for his headed goal. Tired late on.
Jaden Philogene (Ojo 57) 5 - Tries to do so much, which is admirable, but could go for the easier option more often.
Mark Harris (Watters 57) 5 - Had a good opportunity to round the keeper and score, but fluffed his lines.
Joe Ralls (Rinomhota 65) 4 - Something not quite right with him. Just looks a yard or two off it at the minute.
Rubin Colwill (Swayers 65) 6 (star man) - At least tried to inject a bit of oomph. Looked the brightest spark of the lot.
Kion Etete (Romeo 83) NA - Wasn't on long enough.
READ NEXT: