Birmingham's winless home run stretched to seven league games after Cardiff staged a strong second-half recovery to draw 1-1 at St Andrew's.
Midfielder Jude Bellingham gave Blues a fourth-minute lead and Pep Clotet's side went on to dominate the rest of the half, Jeremie Bela hitting the bar and Bellingham denied by goalkeeper Alex Smithies.
But they really needed to make their supremacy count when they were on top, because they were punished for it in the second half.
Lee Tomlin deservedly levelled in the 63rd minute after he had also had an effort ruled out for offside.
Cardiff had a penalty shout waved aside while Joe Bennett fired inches wide as the Welshmen held sway after the break.
But Lukas Jutkiewicz could have snatched victory for Blues only to be denied by Smithies.
The result left Blues 18th, nine points above the relegation zone, but they have now won just two of their last 14 Championship games, a run which started with a 4-2 defeat at Cardiff on November 2. Cardiff are 13th, five points below the play-off zone.
The hosts dominated the first half after taking the lead with the first attack. Dan Crowley's corner was turned on at the near post by Bela and Bellingham stabbed home his fourth goal of the season.
Blues went close to a second goal when Bela let fly from the corner of the box, but his thunderous effort rattled the top of the crossbar and sailed over.
Bellingham was denied his and Blues' second on the half hour. Kerim Mrabti pumped in a long ball, Jutkiewicz headed down and the 16-year-old midfielder's instant volley was superbly pushed around the post by Smithies.
Blues had another chance just before half-time when Crowley put Mrabti through, but the Swedish forward finished weakly.
Cardiff fans, understandably unhappy with the first-half performance, booed their side off at half-time, singing 'Harris, Harris, sort it out' to their manager.
It was a different story after the break however, with Tomlin at the heart of their best work.
The 31-year-old attacking midfielder had an effort disallowed for offside on 48 before his angled shot was blocked by Jutkiewicz.
Tomlin then appeared to have a penalty shout when he tumbled under a challenge by Marc Roberts, but referee Andy Davies was unmoved.
But Tomlin was not finished and he headed home his fifth goal of the season in the 63rd minute from Marlon Pack's inswinging corner, missed by Blues goalkeeper Lee Camp who had come to punch clear.
Cardiff continued to force Blues back and left back Bennett was a whisker away from giving the visitors the lead with a first-time shot from the edge of the box that flew just wide.
Out of the blue, the home side broke and Jutkiewicz's downward header was tipped away by Smithies at full stretch from Ivan Sunjic's searching ball.
In an end to end finish, Cardiff substitute Callum Paterson's shot on the turn was smothered by Camp.
Birmingham City: Camp; Colin, Roberts, Clarke-Salter, Pedersen; Sunjic, Bellingham (Gardner 80); Crowley, Mrabti (Maghoma 63), Bela; Jutkiewicz
Subs: Trueman, McEachran, Davis, Gimenez, Montero
Cardiff City: Smithies; Richards, Morrison, Nelson, Bennett; Pack, Bacuna; Whyte, Tomlin (Glatzel 90), Hoilett (Ralls 84); Ward (Paterson 31)
Subs: Etheridge, Flint, Vaulks, Paterson, Murphy
Referee: Andy Davies