Match ends, Birmingham City 3, Fulham 1.
Birmingham City survived the final-day threat of relegation for the third time in five seasons as they ended Fulham's automatic Championship promotion hopes.
With Cardiff drawing, a win for Fulham would have seen them go up.
But they were always struggling after first-half goals from Lukas Jutkiewicz and home skipper Harlee Dean.
Tom Cairney briefly gave Fulham hope with six minutes left, but Che Adams jinked his way into the box to slide home a low right-foot shot.
The Cottagers' first defeat in 24 league games since December leaves them third, and facing Derby County in the play-offs as they bid to return to the Premier League after a four-year absence.
Blues, the EFL's joint lowest scorers with Burton with 38 in 46 games, hit three in a league match for only the third time this season.
But, after a season-long battle against the drop in a second successive campaign of three managers, Garry Monk's men finally finished five points above the bottom three, again in 19th - just as they did under Harry Redknapp 12 months ago.
It always looked on the cards once confident Blues had taken the lead when Jutkiewicz converted Wes Harding's low cross for his sixth goal of the season - and his fourth in seven games.
Home keeper David Stockdale then saved from Stefan Johansen before unmarked defender Dean, back from suspension, was left free to steer home Jota's left-wing cross, his first goal for the club.
Stockdale maintained Blues' two-goal half-time advantage when he saved from Cairney, who did pull a goal back when he headed in on 84 minutes.
The Blues keeper then turned over Aleksandar Mitrovic's header before Adams breezed through to cheekily finish Fulham off.
Birmingham City boss Garry Monk told BBC WM:
"We knew we were playing against an exceptional team that had been on the best run in the country, 23 games unbeaten, but I could sense it in the week.
"It's what the fans want to see. They want to see commitment and fight and then, on top of that, they want to see some quality, and we had that.
"We thoroughly deserved that win. Te key point was making sure that we finish it on our terms.
"We had an opportunity last week to do that. We didn't do that, so the response needed to be there and it was."
Fulham boss Slavisa Jokanovic:
"I always believe we are going to win the next game. Because we lost one game, I am not going to change my mind.
"We showed quality. The character we showed many times - and we are going to be ready for the next game.
"We're disappointed, not because we're in the play-offs. We're disappointed because we lost a great chance to win the game.
"It's part of football and we must be ready for the challenge. We cannot be satisfied. It's simple. We didn't play well enough."
Line-ups
Birmingham
Formation 4-4-2
- 13Stockdale
- 45Harding
- 28Morrison
- 12Dean
- 5ColinBooked at 82mins
- 27Jota
- 6Kieftenbeld
- 26DavisBooked at 64mins
- 19MaghomaSubstituted forRobinsonat 90+1'minutes
- 18GallagherSubstituted forGardnerat 71'minutes
- 10JutkiewiczSubstituted forAdamsat 62'minutes
Substitutes
- 4Roberts
- 8Gardner
- 14Adams
- 17Ndoye
- 25Dacres-Cogley
- 29Kuszczak
- 40Robinson
Fulham
Formation 4-3-3
- 1Bettinelli
- 2FredericksSubstituted forChristieat 72'minutes
- 4OdoiBooked at 49mins
- 13Ream
- 21TargettSubstituted forKamaraat 45'minutesBooked at 47mins
- 8Johansen
- 6McDonaldBooked at 70mins
- 10Cairney
- 20PiazonSubstituted forAyitéat 64'minutes
- 32Mitrovic
- 3R Sessegnon
Substitutes
- 9Fonte
- 11Ayité
- 16Norwood
- 22Christie
- 26Kalas
- 27Button
- 47Kamara
- Referee:
- Stuart Attwell
- Attendance:
- 27,608
Match Stats
- Possession
- Home27%
- Away73%
- Shots
- Home11
- Away13
- Shots on Target
- Home7
- Away5
- Corners
- Home3
- Away4
- Fouls
- Home14
- Away8
Live Text
Post update
Full Time
Second Half ends, Birmingham City 3, Fulham 1.
Post update
Denis Odoi (Fulham) wins a free kick in the defensive half.
Post update
Foul by Che Adams (Birmingham City).
Post update
Foul by Cyrus Christie (Fulham).
Post update
David Davis (Birmingham City) wins a free kick in the attacking half.
Post update
Attempt missed. Kevin McDonald (Fulham) right footed shot from outside the box is too high. Assisted by Aleksandar Mitrovic.
Post update
Foul by Floyd Ayité (Fulham).
Post update
David Davis (Birmingham City) wins a free kick in the defensive half.
Post update
Attempt missed. Stefan Johansen (Fulham) left footed shot from outside the box is too high. Assisted by Aboubakar Kamara.
Substitution
Substitution, Birmingham City. Paul Robinson replaces Jacques Maghoma.
Goal!
Goal! Birmingham City 3, Fulham 1. Che Adams (Birmingham City) right footed shot from a difficult angle on the left to the bottom right corner. Assisted by Jota.
Post update
Corner, Fulham. Conceded by Harlee Dean.
Post update
Attempt missed. Tom Cairney (Fulham) header from the centre of the box misses to the left. Assisted by Stefan Johansen with a cross following a corner.
Post update
Corner, Fulham. Conceded by David Stockdale.
Post update
Attempt saved. Aleksandar Mitrovic (Fulham) header from the centre of the box is saved in the top centre of the goal. Assisted by Cyrus Christie with a cross.
Post update
Attempt blocked. Jota (Birmingham City) right footed shot from the centre of the box is blocked. Assisted by Jacques Maghoma.
Goal!
Goal! Birmingham City 2, Fulham 1. Tom Cairney (Fulham) header from the centre of the box to the bottom left corner. Assisted by Floyd Ayité.
Post update
Offside, Fulham. Ryan Sessegnon tries a through ball, but Aleksandar Mitrovic is caught offside.
Booking
Maxime Colin (Birmingham City) is shown the yellow card for a bad foul.
Comments
Join the conversation
KRO
Keep Right On
Also see that 'Colin' has been promoted again. (Sheff Wed fans know who I'm referring to)!
Manager & Players 1 - Club owners 0.
KRO