Ryan Allsop 8
Gave the fans heart palpitations at times with how he insisted on playing out from the back, but made excellent saves off Jake Livermore and Jed Wallace early then a point-earning one from Semi Ajayi late on.
Mahlon Romeo 8
Another very solid performance, especially given the quality of Albion's wide players. The perfect away night for such a solid defender.
Perry Ng 8
Was largely very good. Always seemed to win a header when it mattered and made a couple of crucial interceptions. Added a calmness at the back.
Read next: The match report from the draw at West Brom
Jack Simpson 7
Started quite shakily, gifting possession away once or twice and getting turned inside out by Grady Diangana on one occasion. But settled as the game wore on.
Jamilu Collins NA
So unfortunate. Had a nasty injury inside the first few minutes and was forced off. A shame.
Ryan Wintle 8
You know what you're getting from this guy now. Blasted one low shot wide from range and did the mucky work late on in the second half.
Andy Rinomhota 8
Another ideal player for a tough away night, breaking things up in the middle of the park. Some engine on him.
Joe Ralls 7
Just looked a tad undercooked at times. Was one or two steps off the pace and wanted more time on the ball than he was afforded. Adjusted later in the game.
Sheyi Ojo 9 (star man)
Was a constant outlet for Cardiff and got them up the pitch when under pressure with some strong running. Saw one shot go narrowly wide. The perfect away performance and was shattered when he came off.
Max Watters 7
Did his best up against two big, strong centre-halves. Was never going to see too much of the ball but did well enough with the job he was tasked with.
Jaden Philogene 8
Another who started slowly but grew into it. Provided some decent breakaways for the visitors and always looked neat with the ball at his feet.
Subs
Callum O'Dowda (Collins 9) 8 - Not his natural position, especially in a back four, so we didn't see his attacking prowess. Did a brilliant makeshift job, though.
Romaine Sawyers (Ralls 63) 6 - Solid enough when he came on, no great shakes but stuck to his task well.
Kion Etete (Watters 63) 6 - Provided a focal point but the ball just seemed to bounce off him at times. Did OK, though.
Mark Harris (Philogene 75) 6 - Gifted a couple of cynical fouls away but harried the Albion defence.
Read next:
The Cardiff City youngsters who made their cases to Steve Morison and the player levels above