Although Reading dominated most of the match, they wasted several chances in the closing stages of the first half.
Blues held firm and grabbed the winner seven minutes from the end, when Clayton Donaldson nodded in his 16th goal of the season.
Reading were involved in a dramatic 2-1 defeat against Arsenal, after extra-time, in the last four of the Cup at Wembley on Saturday.
Goalkeeper Adam Federici, whose fumble led to Alexis Sanchez's winning goal, was retained against Blues - as were six of his fellow starters from Wembley.
At least Reading had no pressure on them, the last lingering doubts of relegation having been removed when Millwall lost 2-0 at Blackburn Rovers on Tuesday night.
Blues had little to play for either, apart from trying to improve on a poor recent record of just two wins in eight league matches.
A predictably dour opening, with neither side keen to force the pace, ended when Wes Thomas aimed at Federici. But it was a weak effort that did not trouble the Australian goalkeeper.
Reading, with only two wins in 13 league games behind them and no wins in six, responded swiftly as the game warmed up.
Garath McCleary, scorer of Reading's equaliser against Arsenal, fired wide after a long pass from Jake Cooper.
A Cooper header lacked the power to test Blues keeper Darren Randolph, Jamie Mackie shot wide after Jem Karacan had been blocked out, and Mackie and Nick Blackman had close-range efforts cleared to safety.
Randolph made a flying save to keep out a fierce McCleary shot and the keeper also had to stop two decent long-range attempts from Nathaniel Chalobah.
Blues threatened only rarely, Paul Caddis blazing over from a Diego Fabbrini cross, which Donaldson had missed, and Jonathan Grounds heading straight at Federici from a Caddis corner.
Reading kept up the momentum after the interval but, as Blues defended stubbornly, the home side spoiled good approach work with poor final touches.
Nathan Ake did manage to fashion a chance when wriggling clear of his markers but drove straight at Randolph.
Blues continued to sit back, inviting the pressure. Jordan Obita missed with a powerful drive and then drilled over a low cross that no team-mate was able to reach.
Andrew Shinnie was off target from distance but Reading regained the upper hand with efforts from Chalobah, a 20-yard shot saved by Randolph, substitute Jack Stacey and Ake.
Blues rallied late on, with Federici having to make two smart saves to deny substitute Demarai Gray.
Gary Rowett's side broke the deadlock in the 83rd minute. Stephen Gleeson delivered a corner from the left and Donaldson rose unchallenged to glance a header past the helpless Federici.