Birmingham’s seven-game winning streak in Sky Bet League One was ended as Charlton striker Matty Godden scored the only goal at The Valley.
It was nothing less than the Addicks deserved as they subdued the Blues’ attacking talents with Alfie May, facing his former club, replaced as one of three half-time changes by manager Chris Davies.
Charlton’s pressing caused Birmingham problems and the hosts, on a three-match losing streak, had chances to be ahead before the break.
Allan Campbell fired narrowly over from the edge of the box after 34 minutes, while striker Daniel Kanu could only steer across the face of goal from a tight angle after intercepting a Willum Willumsson backpass.
Ryan Allsop gifted Kanu a huge chance when he passed to him inside the penalty area but the striker’s poor first touch allowed the Blues keeper to regain the ball.
Charlton broke the deadlock in the 54th minute when summer signing Godden netted his fourth goal of the season in all competitions.
The former Coventry striker smartly hooked home from close range after Josh Edwards’ long throw dropped to him.
Birmingham failed to register an effort on target.