Champions Reading saw their promotion party tainted somewhat as they fell to only a second defeat in 19 at the hands of a Birmingham side who go into the play-offs full of confidence.
The 2-0 loss, however, will be the last thing on the minds of Reading's players and staff when they deservedly lift the npower Championship trophy back in Berkshire on Sunday after a superb season on the back of last May's play-off agony at Wembley.
But Birmingham, unbeaten in nine, will take great heart from the triumph, which crucially moves them up into fourth place and with home advantage in the second leg of the play-offs against Blackpool - with the first leg at Bloomfield Road next Friday.
Substitute Adam Rooney grabbed the opener in the 24th minute before Pablo Ibanez, having twice cleared off the line, headed against a post.
Blues goalkeeper Colin Doyle, who saved two penalties from Chelsea's Juan Mata in the FA Cup earlier this season, kept out Ian Harte from the spot, and it was left for Wade Elliott to seal victory with a penalty of his own.
City could have inflicted Reading's heaviest defeat of the season in injury time but Elliott saw a second spot-kick parried away by Adam Federici.
With Birmingham's play-off place already all but mathematically secure, boss Chris Hughton was able to rest star performers Marlon King and Chris Burke to the bench while Jordon Mutch, carrying a slight ankle knock, was also omitted.
The early entertainment came courtesy of the 4,134 Reading faithful who were well and truly in party mood, with a host of inflatables making their way on to the pitch in the early stages.
Andros Townsend and Curtis Davies tested Federici before City suffered a 19th-minute blow as Nikola Zigic was unable to continue having suffered a blow to his ankle in an earlier challenge.
Royals frontman Simon Church almost immediately opened the scoring with a well-taken volley which flew narrowly over the crossbar.
But it was Blues who broke the deadlock midway through the half as Rooney, on for Zigic, converted from the middle of the penalty area after a great break down the left by Nathan Redmond.
The promising 18-year-old whistled a shot of his own narrowly over but it was the hosts who were soon clearing their lines.
Adam Le Fondre was clattered by Davies, with appeals for a penalty, but the ball passed Doyle and had to be hacked off the line by Ibanez.
The Spaniard again came to Blues' rescue before the break as he cleared off the line for a second time from Le Fondre.
And Ibanez almost make an impact at the other end on the stroke of half-time, his header from Elliott's right-wing free-kick coming off a post.
Jobi McAnuff headed off target for Reading at the start of the second half before Elliott's volley for Blues flew a fraction over the bar.
Davies spared Colin Doyle's blushes with a timely clearance but, from the resulting corner, Ibanez needlessly climbed over Alex Pearce to concede the first penalty of the game.
Yet Doyle made up for his error with a superb save to his right to keep out Harte.
And the game was soon wrapped up in the 75th minute as Jay Tabb was penalised for handball, leaving Elliott to fire home from the spot.
The former Burnley man could have grabbed a second from 12 yards late on but he was denied by Federici after Hal Robson-Kanu brought down Burke.
Birmingham Doyle, Ramage, Davies, Ibanez, Murphy, Elliott, N'Daw (Burke 70), Redmond, Gomis, Townsend, Zigic (Rooney 19).
Subs Not Used: Butland, King, Huseklepp.
Goals: Rooney 24, Elliott 75 pen.
Reading Federici, Connolly (Cummings 62), Gorkss, Pearce, Harte, McAnuff, Leigertwood (Gunnarsson 71), Tabb, Robson-Kanu, Le Fondre, Church.
Subs Not Used: McCarthy, Hunt, Joseph Mills.
Ref: Robert Madley (West Yorkshire).