Birmingham 3 Fulham 1
Fulham missed out on automatic promotion on the final day with their first Championship defeat in 24 games.
The Whites needed to better Cardiff’s result against Reading, which finished in a draw, but instead fell to goals from Lukas Jutkeiwicz, Harlee Dean and Che Adams that ensured Birmingham’s safety.
Tom Cairney had pulled a late goal back from close range to set up a tense finish before Adams got the third, and Aleksandar Mitrovic’s bullet header would have found net if not for David Stockdale.
But Fulham now face Derby County in the semi-finals hoping to avoid a repeat of last season’s heartbreak against Reading.
The visitors wasted a number of chances and defended poorly in an uncharacteristically disappointing display at St Andrews.
The in-form Mitrovic went close early on and then again from a free-kick just moments after Jutkeiwicz rifled home Wes Harding’s cross from the right on 15 minutes.
Cairney saw an unmarked volley from inside the box saved by Stockdale after ex-Brentford pair Jota and Dean combined for the latter to make it 2-0 shortly before half-time.
Aboubakar Kamara was introduced for Matt Targett after the Southampton loanee had struggled with Jota, and Kamara’s power produced a chance that he fluffed at the far post.
But the Whites struggled to create more clear-cut chances until Cairney tapped home a cut-back from returning substitute Floyd Ayite with five minutes of normal time remaining.
Mitrovic’s superb header needed to go in to make it 2-2 and put Fulham on the cusp of a memorable comeback, but instead Birmingham raced down the other end and Adams waltzed past Dennis Odoi before finishing past Bettinelli to kill the game.
Subs not used: Button, Kalas, Norwood, Fonte.