Birmingham earned their first victory in four games courtesy of Franck Queudrue's goal against Charlton.
James McFadden opened the scoring for the home side with a delightful curler only for Hameur Bouazza to equalise with a fantastic volley.
Andy Gray put Charlton back in front but Addicks keeper Nicky Weaver made two errors for Kevin Phillips to head in and for Queudrue to grab the winner.
Birmingham's Nigel Quashie was sent off on the hour for a second booking.
Birmingham boss Alex McLeish on striker Kevin Phillips: "It was an unfortunate moment for their goalkeeper Nicky Weaver but Kevin followed it in and that was a real turning point.
"That's the greatness of Kevin. A lot of forwards wouldn't have followed it in because it looked like a dolly of a catch but that is his instinct.
"He is a master of taking those chances. Heads seemed to drop but at the break I told them that it wasn't the mistakes but the reaction that matters and we showed good spirit."
Charlton manager Alan Pardew:
"There were some key incidents in the game and unfortunately most of them went against us.
"We looked organised and had a good footing in the game and we deserved to be ahead.
"But an uncharacteristic mistake gave them a lift and then another one straight away gave them the win. Those two errors have cost us the points."
Birmingham: Maik Taylor, Hunt, Jaidi, Ridgewell, Queudrue (Martin Taylor 80), Larsson, Carsley, Quashie, McFadden, Phillips (Nafti 61), Bent (Jerome 73). Subs Not Used: Doyle, Owusu-Abeyie.
Bookmark with:
What are these?