A spirited second half comeback wasn't enough for Rovers as they ended 2013 with a rare home defeat.
Rovers were stunned by a first half that saw the visitors net three unanswered goals. Lee Novak scoring twice before Chris Burke added a third as Birmingham made the most of the chances handed to them.
In comparison the home side were wasteful in the first half, Rhodes hitting a post then through their best chance, but they finally grabbed a goal their attacking play deserved just past the hour mark, Ben Marshall crossing from the byline, Jordan Rhodes heading home.
Six minutes later and the deficit was reduced further, Rhodes latching onto Scott Dann's lofted pass to fire home on 72 minutes with a deft lob for his 15th of the season.
Rovers laid siege in an attempt to get an equaliser, Marshall and substitute Alan Judge both going close, whilst Jason Lowe almost found Rhodes with a through ball.
But the big chance came at the death and fell to Grant Hanley, a Cairney corner arrived at the defender but his shot bounced off the foot of the post and Birmingham 'keeper Darren Randolph gleefully claimed the ball.
It was a disappointing end to the year, but there was no doubting Rovers' intent despite the defeat.
Ahead of the game Rovers made two changes from the side that drew with Sheffield Wednesday on Boxing Day.
Lee Williamson and Ruben Rochina got the nod to step up to the starting eleven, replacing Chris Taylor and Rudy Gestede who both dropped to the bench. David Dunn (thigh), Josh King (back) and Todd Kane (thigh) all missed out.
Straight out the of the blocks, the returning Ruben Rochina had an effort on goal. Good play by Adam Henley saw Rochina find Tom Cairney, the ball was switched back to the Spaniard but he fired narrowly wide.
Moments later and Henley was again in the thick of the action, teeing up Tom Cairney but his shot was well blocked.
Despite the promising start Rovers were stunned as the visitors grabbed an unlikely lead. A corner was initially cleared, but as the ball was put back into the box it was headed back by Lee Novak to Dan Burn who squared it for Novak to fire home from close-range.
The opening goal came on 12 minutes, six minutes later the 1000 visiting fans were celebrating a second.
Lee Novak got the better of Ruben Rochina in the centre of the park, before advancing and shooting from distance, the ball swerving into the corner of the net beyond the despairing dive of Eastwood. A goal that should have been prevented.
Rovers looked to hit back, a lovely ball from Tom Cairney saw Jordan Rhodes through but he slammed his shot against the upright from a tightening angle.
However any chance of a comeback appear to have ended when the visitors grabbed a third goal, but it was all in Rovers' making.
A poor back pass from Grant Hanley saw Simon Eastwood under pressure, unfortunately he cleared the ball straight to Chris Burke and the Birmingham midfielder needed no second invitation to fire the ball back into the net.
It could have got worse before the break but for a fingertip save from Eastwood to deny Burke, in some way making amends for his earlier error.
Gary Bowyer made an attacking change at the start of the second half as Lee Williamson was replaced by Rudy Gestede.
Almost immediately the loan man threatened, seeing a header from a free-kick deflect just wide as Rovers started on the front foot.
However Birmingham could have notched further as the impressive Chris Burke broke down the right, play was switched to Andy Shinnie who found Lee Novak but his ball across the area found neither the target nor the advancing Nikola Zigic.
Rovers went back up the other end and on 66 minutes grabbed a goal their play deserved. Ben Marshall, continuing his fine recent form, skipped to the byline to cross on a plate for Jordan Rhodes who headed home at the back post.
Roared on by a vociferous support Rovers went looking for more and a second goal soon followed.
On 72 minutes a lofted ball from Scott Dann found Rhodes racing through and he finished in fine style with a deft lob over the advancing Darren Randolph.
Moments later Rovers almost grabbed a third, again Marshall got round the back but his cross was just an inch too high for straining Gestede.
Marshall was growing more and more into the game, on 80 minutes he opted to cut inside and shoot but he fired over from the angle. Then after play was waved on when Gestede was fouled, Jason Lowe looked to thread the ball to Rhodes but Randolph was alert to the danger.
On 90 minutes a Tom Cairney free-kick almost lead to an equaliser but Scott Dann missed his shot at goal. The ball fell to Alan Judge but Nikola Zigic cleared his effort off the line.
Rovers continued to pour forward, the 94th minute saw yet another corner kick but as 'keeper Simon Eastwood came up, Grant Hanley met Cairney's ball but it bounced off the foot of the post and Randolph gleefully claimed the rebound.
It is often said that football is a funny old game, there was nothing as strange as this afternoon's match, a game where Rovers had the better of play throughout but ultimately came up short as sloppy mistakes at the back proved costly.
ROVERS: Eastwood, Henley, Dann (c), Hanley, Spurr, Cairney, Lowe, Williamson (sub Gestede 46 mins), Marshall (sub Taylor 88 mins), Rochina (sub Judge 66 mins), Rhodes.
Subs not used: Kean (GK), Kilgallon, Campbell, Olsson.
Goals: Rhodes 66, 72 mins.
Booked: Williamson, Lowe.
BIRMINGHAM: Randolph, Robinson (c), Bartley, Burn, Burke (sub Lovenkrands 89 mins), Novak, Zigic, Lee, Shinnie (sub Ferguson 76 mins), Adeyemi (sub Reilly 34 mins), Caddis.
Subs not used: Doyle (GK), Mullins, Brown, Gray.
Goals: Novak 12, 18 mins, Burke 36.
Booked: Novak, Zigic.
Attendance: 14,344 (including 1000 visiting supporters)