PETER Whittingham’s goal sentenced Albion to a fourth successive Barclays Premier League defeat.
Neither side deserved all three points in what proved a scrappy encounter between two teams looking to pull away from the bottom three.
The Baggies should have taken the lead on 57 but saw Gareth McAuley’s effort cleared off the goalline.
Whittingham made the visitors pay nine minutes later as he nodded home from close range.
And David Marshall pulled off a world-class save from Shane Long at the death to ensure the Bluebirds took the spoils and leap-frog Steve Clarke’s men in the table.
Jonas Olsson won an instant return to the Baggies defence after suspension, while Long was also recalled to spearhead the attack.
Former Albion striker Peter Odemwingie was back in the Bluebirds’ line-up as Malky MacKay also drafted Craig Noone and Andrew Taylor into his starting XI.
The first threat came from the hosts amid some confusion. Odemwingie and Whittingham simultaneously struck the same 20-yard free-kick that Boaz Myhill did well to beat out for a corner.
Billy Jones headed the resulting flag-kick clear but Kevin Theophile-Catherine drove it back goalwards and Youssouf Mulumbu blocked before Gary Medel fired the rebound over from 25 yards.
At the other end on 19, Ben Turner and David Marshall got themselves in a pickle and the former almost put the ball past his own goalkeeper. Turner then gifted the ball to Long and although Taylor did well to intercept his attempted pass he was fortunate to see Marshall stop the ball finding his own net.
Noone was causing problems down the right and he delivered a dangerous cross to the back post, where Jones did well to guide the ball away from Whittingham.
Seconds later, Turner flicked on Whittingham’s near-post corner and Steven Caulker arrived unmarked at the back – but fired wide of goal when he should at least have hit the target.
Two minutes before half-time, Odemwingie’s cross flew inches over Fraizer Campbell’s head in the six-yard box and Olsson was just able to clear.
The second half started in a similar vein to the first, with the Baggies weathering City pressure and occasionally pushing forward.
And on 50, Stephane Sessegnon fed the ball inside to Long, whose goalbound strike on the edge of the box was blocked by Turner.
The visitors almost – and should have – opened the scoring seven minutes later when Jones slid Morgan Amalfitano in behind the Cardiff backline.
The France international cut the ball back for Yacob and his scuffed shot fell to McAuley, whose six-yard effort was cleared off the goalline by Medel.
Just past the hour-mark, Long nodded Ridgewell’s throw-in down for Sessegnon and the former Sunderland forward volleyed a shot well over from 25 yards.
But it was City who stole a lead on 66 when Whittingham got in ahead of Jones to head Noone’s right-wing cross home.
Two minutes later, the hosts almost doubled their lead as Caulker powered Whittingham’s back-post corner goalwards, only to see Odemwingie prevent it from going in and Olsson cleared.
Mulumbu tried his luck from distance in the 69th minute and saw his shot deflect off Taylor and just past the right-hand post.
Shortly afterwards, Long went down in the box under Turner’s challenge – but referee Howard Webb waved away Albion’s penalty appeals.
Clarke made a double change on 73 as Amalfitano and Yacob made way for Saido Berahino and Scott Sinclair.
A minute later, Olsson handed the ball to Mutch and he wrong-footed Chris Brunt before firing inches over the bar from 18 yards.
Albion kept pushing and they went close when McAuley headed Brunt’s free-kick back across goal and just out of the reach of Long and Berahino.
Four minutes from time, Berahino flicked on Sessegnon’s cross and Long looked certain to equalise with an instinctive header, only for Marshall to throw himself to his left and pull off a world-class save.
That proved Albion's final chance as their desperate search for a leveller was halfted by Webb's final whistle.
CARDIFF (4-2-3-1): Marshall; Theophile-Catherine, Turner, Caulker (c), Taylor; Whittingham, Medel (Gunnarsson 87); Noone, Mutch, Odemwingie (Kim 90); Campbell (Maynard 82). Subs not used: Lewis (gk), Hudson, Cornelius, Cowie.
ALBION (4-2-3-1): Myhill; Jones, McAuley, Olsson, Ridgewell; Mulumbu, Yacob (Sinclair 73); Amalfitano (Berahino 73), Sessegnon, Brunt (c); Long (Vydra 88). Subs not used: L Daniels (gk), Gera, Morrison, Lugano.
GOALS: CARDIFF - Whittingham (66).
BOOKINGS: CARDIFF – Medel (foul 36), Mutch (foul 63). ALBION: Jones (foul 50).
REFEREE: Howard Webb (South Yorkshire).
ALBION STARMAN: Shane Long.