Adam Rooney sealed Birmingham a Championship play-off date with Blackpool with a 2-0 defeat of Reading.
Rooney scored after being teed-up by Nathan Redmond, before Wade Elliott ensured the win from the spot.
Elliott also missed a late penalty, while Blues keeper Colin Doyle frustrated the champions by keeping out Ian Harte's spot-kick.
Semi-finals first leg
Cardiff v West Ham (1945 BST)
Blackpool v Birmingham (1945)
Semi-finals second leg
West Ham v Cardiff (1630)
Birmingham v Blackpool (1945)
Pablo Ibanez also headed against a post for Birmingham, who travel to Blackpool for the semi-final first leg on Friday.
While champions Reading brought the curtain down on a highly successful campaign with a rare defeat, Birmingham head into the play-offs in good form.
Chris Hughton's side, who finished fourth in the table, are unbeaten in nine league games.
Substitute Rooney, a 19th-minute replacement for the injured Nikola Zigic, had only been on the pitch a short time when he netted his seventh goal of the season after coolly slotting home following clever play by Redmond.
In an entertaining match, Ibanez twice frustrated Reading's Adam Le Fondre with clearances off the line before half-time.
Ibanez was left cursing himself when he headed against a post following a free-kick by Elliott.
The second-half was just as thrilling as the first 45 minutes.
After Harte's penalty, awarded when Ibanez fouled Alex Pearce, had been saved by Doyle, Elliott doubled Birmingham's advantage from the spot following a handball by Jay Tabb.
There was still time for Elliott to miss the game's third penalty in the dying moments, Adam Federici doing well to keep out Elliott's effort after substitute Brynjar Gunarsson was adjudged to have fouled Rooney.
Birmingham manager Chris Hughton:
"It has been a long hard season. This was our 60th game of the season but we finished very strong and that shows what we have in the team and the locker.
"This is why we are desperate for the lads to finish off the job and I sincerely hope they can."
Reading manager Brian McDermott:
"It was a funny decision in the first half when the referee didn't give us a penalty which would have made 1-1.
"There could have been a sending off and he missed it and then he gave three silly penalties in the second half.
"It is all irrelevant now but I would not have liked to have come here wanting a point and not getting it because of that decision."
- 13 Doyle
- 03 Murphy Booked
- 05 Pablo
- 06 Ramage
- 24 Davies
- 08 N'daw (Burke - 70' )
- 11 Townsend
- 14 Gomis
- 15 Elliott
- 22 Redmond
- 19 Zigic (Rooney - 19' )
- 26 Butland
- 07 Burke
- 10 Huseklepp
- 09 King
- 17 Rooney
- 01 Federici
- 03 Connolly Booked (Cummings - 62' )
- 05 Pearce
- 17 Gorkss
- 23 Harte
- 07 Tabb
- 08 Leigertwood (Gunnarsson - 71' )
- 11 McAnuff
- 19 Robson-Kanu
- 09 Le Fondre
- 18 Church
- 12 McCarthy
- 16 Jo Mills
- 24 Cummings
- 06 Gunnarsson
- 10 Hunt
Ref: Robert Madley