Match ends, Birmingham City 1, Cardiff City 0.
Birmingham City claimed a first home win in two months as a Paul Caddis penalty saw them beat Cardiff.
He sent Cardiff keeper David Marshall the wrong way following a controversial handball decision against Matthew Connolly on the stroke of half-time.
Marshall then denied Blues a second with the save of the match to deny Jon Toral, diving to his left.
Cardiff missed several chances in front of a crowd of just 14,415, Birmingham's lowest of the season.
Blues keeper Tomasz Kuszczak denied Scott Malone in the 89th minute - and other openings were wasted in a sustained spell of Cardiff dominance.
From Malone's cross, Anthony Pilkington shot wide at the near post, Sammy Ameobi splayed a shot across the face of the goal when clear while home defender Jonathan Spector almost scored in his own net.
|Cardiff were forced into an early change following James Vaughan's block tackle on Sean Morrison, who was replaced by Bruno Ecule Manga.|
|Blues also lost man before the break when injury-jinxed Neil Eardley was forced off after 26 minutes in only his fourth game back in the team - but it brought into the action Paul Caddis, who was to prove the match winner.|
It was a quiet opening 45 minutes but the game burst to life in first-half injury time.
Cardiff keeper Marshall looked like he might have been impeded but, when the ball spilled loose, on-loan Blues striker James Vaughan's shot was blocked by Connolly and referee David Coote gave a penalty.
However, replays suggested the ball had hit Connolly in the face rather than the arm.
Cardiff boss Russell Slade was so incensed by the decision that he had to be restrained at the half-time whistle.
Other than that, Kenwyne Jones might have done better with a header from a deflected cross, which Kuszczak saved comfortably to his left, while Pilkington had a left-foot shot deflected over.
Cardiff also had more decent chances after the break - but it was Gary Rowett's Blues who held out for a second clean sheet in three games to leapfrog the visitors into seventh in the Championship table.
Birmingham City manager Gary Rowett told BBC Sport:
"It looked like it might have hit him on the hand but, when you see the TV replay, it clearly hit him in the face. You have to be 100% sure with decisions like that.
"To get that first goal, however fortunate it might be, was so important as it's been a while since we took the lead in any game.
"We've had three games in six days and the lads were out on their feet second half. We've worked very hard to only get two points from the last two away games so, for us to play not as well we can and get the fortune is a great effort. I'll take the poor performance and three points."
Cardiff City manager Russell Slade told BBC Sport:
"We're all very hurt. It's so disappointing when a huge error gives Birmingham the opportunity to score their goal.
"Overall, I was very pleased with the way we played. For large periods, we bossed it but we couldn't find the finish. We just could not find the final ball.
"I would have liked to talk to the referee, but we have a cooling-off period after the game when we're not allowed to talk to him, and that's probably in his best interests."
- 2EardleySubstituted forCaddisat 25'minutes
- 23SpectorBooked at 67mins
- 25LowryBooked at 36minsSubstituted forHalfordat 79'minutes
- 6KieftenbeldBooked at 72mins
- 20ToralSubstituted forDavisat 69'minutes
- 4MorrisonSubstituted forEcuele Mangaat 9'minutes
- 17GunnarssonSubstituted forWhittinghamat 80'minutes
- 13PilkingtonSubstituted forNooneat 79'minutes
- 33WattBooked at 86mins
- 3da Silva
- 5Ecuele Manga
- Keith Stroud
- Shots on Target
Second Half ends, Birmingham City 1, Cardiff City 0.
Attempt missed. Scott Malone (Cardiff City) left footed shot from outside the box is high and wide to the left following a set piece situation.
Tony Watt (Cardiff City) wins a free kick in the attacking half.
Foul by Stephen Gleeson (Birmingham City).
Bruno Ecuele Manga (Cardiff City) wins a free kick in the defensive half.
Foul by David Davis (Birmingham City).
Foul by Matthew Connolly (Cardiff City).
James Vaughan (Birmingham City) wins a free kick on the right wing.
Foul by Bruno Ecuele Manga (Cardiff City).
James Vaughan (Birmingham City) wins a free kick on the left wing.
Corner, Cardiff City. Conceded by Tomasz Kuszczak.
Attempt saved. Scott Malone (Cardiff City) left footed shot from the left side of the box is saved in the top right corner. Assisted by Sammy Ameobi.
Foul by Joe Ralls (Cardiff City).
Maikel Kieftenbeld (Birmingham City) wins a free kick in the defensive half.
Tony Watt (Cardiff City) is shown the yellow card.
Foul by Tony Watt (Cardiff City).
Stephen Gleeson (Birmingham City) wins a free kick in the attacking half.
Attempt saved. Demarai Gray (Birmingham City) right footed shot from the right side of the box is saved in the centre of the goal.
Attempt missed. David Davis (Birmingham City) left footed shot from the left side of the box misses to the right.