Ryan Allsop 7
Couldn't do anything regarding Josh Laurent's goal, but came and gathered a couple of dangerous crosses, despite flapping at one ball over the top early on. Off injured just after the hour-mark.
Mark McGuinness 7
It wasn't his man - but he was one of the players to get outjumped from the corner for Josh Laurent's goal. Steady thereafter, though, both defensively and with the ball.
READ MORE: Bluebirds fight back to earn a point but Sory Kaba misses penalty
Perry Ng 7
Had a bit of trouble early with the ball played over him to Tyrese Campbell a number of times. But hit that trademark diagonal cross to great effect a couple of times - Kaba should have netted from one.
Cedric Kipre 8
Composed again with the ball at his feet, even under pressure from Stoke's attackers. Probably the pick of the centre-backs.
Mahlon Romeo 8
A solid outing from the right-back. Had to help Ng when he was overloaded, which meant we didn't see as much of him in the forward areas.
Ryan Wintle 8
Played the most advanced of a midfield three and found himself in the box once or twice, linking with the attackers. Played a stunning ball to Philogene which led to the penalty before making a goal-saving intervention minutes later. Was everywhere by the end.
Romaine Sawyers 6
Took the sting out of things, which was to the annoyance of some Cardiff fans, but that was the reason for his selection. Generally tidy with the ball at his feet but his standards just slipped after the break and he became uncharacteristically sloppy.
Joe Ralls (c) 7
Slotted a lovely through-ball to Kaba early on but the chance was spurned. Didn't see too much of him after that, though.
Callum O'Dowda 9 (star man)
Showed impeccable composure on more than one occasion to stop some attacks down his flank. Made one or two marauding runs down the wing as well. Was the standout player for the hosts by a country mile.
Sory Kaba 7
Showed great composure before slotting home City's goal. Should perhaps have slotted a second when Ng found him with a lovely cross, but his volley was saved. Then missed his penalty - but it was a top save, to the keeper's credit.
Kion Etete 7
Was partially at fault for Laurent's goal as he was outjumped at the corner. Was a nuisance in the air and helped to set up Kaba's goal. Taken off on the hour.
Subs
Mark Harris (Etete 59) 6 - Didn't contribute a huge deal after coming on, truth be told. But did nothing glaringly wrong, either.
Jaden Philogene (Ralls 59) 8 - Did brilliantly to earn a penalty just after coming on, skinning Connor Taylor in the process. Showed skill to beat a number of Stoke players after that, too. A good cameo off the bench.
Jak Alnwick (Allsop 66) 6 - Other than one sliced clearance, was pretty solid between the sticks after replacing Allsop.
READ NEXT
Sabri Lamouchi makes big claim on Sory Kaba's Cardiff City future