Dougie Freedman's side suffered losses to lowly Peterborough and Sheffield Wednesday over the festive period and fell behind after just 11 minutes.
Nikola Zigic headed his fifth of the season but the hosts hit back to lead by half-time with goals from Marcos Alonso and Chung-Yong Lee. A second-half penalty from Keith Andrews settled the matter and Zigic saw red as Birmingham's three-match unbeaten run came to an end.
The hosts started much the brighter, Chris Eagles cutting in from the right and trying his luck with an early long-range strike but Jack Butland was equal to the challenge.
The Trotters threatened again moments later as Jay Spearing hit a superb looping volley from 30 yards which just dropped wide of the post.
But it was Lee Clark's side who seized the advantage. Chris Burke's right-wing corner hung in the air and Zigic came through a crowded scene to nod home from six yards.
Bolton equalised when Tyrone Mears burst down the right and delivered a teasing ball for Alonso to provide the headed finish, outmuscling Curtis Davies to do so, in the 27th minute.
It got even better for Freedman's side just past the half-hour mark, Lee skipping past two defenders, rounding Butland and squeezing the ball in from a tight angle.
The impressive Spearing linked well with Kevin Davies and the veteran striker forced a smart stop from Butland.
Clark turned to his bench for inspiration early in the second half, bringing on Wade Elliott for Jonathan Spector.
But after City's Steven Caldwell handled in the box, Andrews stepped up to calmly steer the spot-kick past Butland in the 79th minute.
Zigic was given his marching orders late on after picking up two bookings in little over a minute as the Serb went from hero to zero.