Nikola Zigic converted Shane Ferguson's cross from close range to clinch Blues' first-ever points at the Riverside and their first victory on Boro soil in 14 attempts stretching back to a 1980 success at Ayresome Park.
Boro - playing in front of their lowest league attendance since October, just 14,348 - are now five points off the play-off places while they have lost four of their last five and won just one of their last seven.
Blues had a start to forget after making a hash of the kick-off before losing Jonathan Spector to injury after just four minutes, Keith Fahey stepping in for his first appearance since October having been on lengthy compassionate leave.
But the visitors soon settled into what was a low-key start to proceedings and began to look the more threatening against a Boro side obviously lacking confidence, Ravel Morrison and Wes Thomas shooting narrowly wide.
Boro grew in stature and enjoyed a solid period of pressure in which Scott McDonald fired wide from 12 yards but, all in all, the game still lacked spark.
Both sides were looking increasingly dangerous as the first half wore on - Sammy Ameobi firing straight at Jack Butland before McDonald blazed over, while Jason Steele saved from Morrison - but it remained goalless at the break.
Middlesbrough failed to really test Butland during a string of corners at the start of the second half. But the England goalkeeper had to be alert in the 57th minute to deny McDonald, who had been sent clear by a routine long ball.
The encounter took on an increased tempo after the break, largely due to greater urgency from the hosts, with substitute Ishmael Miller heading just wide before Nathan Redmond went just as close for Birmingham with a long-range effort.
Butland was again on call to palm away an effort from Reach before Morrison saw his shot parried away.
But the game's winning goal finally arrived nine minutes from time, Wade Elliott finding Ferguson who sent in a low cross which was converted by Zigic, who just got ahead of George Friend, to clinch City's first league double over Boro in 32 years.