Match ends, Rotherham United 1, Birmingham City 3.
Birmingham City secured their Championship status by coming from behind to beat Rotherham United, who face an instant return to League One.
The Millers had led at the New York Stadium when Matt Crooks struck his third goal in three matches when left unmarked midway through the first half.
But Jacques Maghoma's fierce strike drew Blues level just before the hour, and Jota completed the turnaround after being picked out by Che Adams.
Then, in added time, Sweden international Kerim Mrabti scored his first City goal since joining the club in January to make sure of victory.
In truth, it could have been more for Garry Monk's side, who struck the outside of the post through a Gary Gardner free-kick minutes before Mrabti's strike.
Rotherham's hopes of avoiding relegation to a division they were only promoted from 11 months ago now look increasingly bleak.
With two games to play, their inferior goal difference means they can only realistically catch Millwall, three points and one place above them, but the London side have a game in hand on Paul Warne's men.
Conversely, Birmingham can breathe easily knowing they have avoided the catastrophe that last month's nine-point deduction for breaching the EFL's profitability and sustainability rules had threatened.
Rotherham manager Paul Warne:
"We won't give up. This group, I have tried to sign characters and leaders.
"It was a must-win game. We didn't win it so it's disappointing. They [Rotherham's remaining fixtures] are two games that we need to get something from.
"I won't approach them any differently. I am very hopeful if we can pick something up on our travels at West Brom it could come down to the last game."
Birmingham City manager Garry Monk:
"They were really good goals and we looked a real danger when we got into those situations.
"We have been fighting to get us safe, that's what we have been fighting for since the nine-point deduction.
"I am really proud of the players in what's been a really difficult season, it's been one of the toughest I've had as a manager."
- 5AjayiBooked at 5mins
- 6WoodBooked at 50minsSubstituted forFordeat 69'minutes
- 4VaulksBooked at 73mins
- 23WilliamsSubstituted forVassellat 77'minutes
- 22NewellSubstituted forTaylorat 61'minutes
- 23JotaSubstituted forMrabtiat 77'minutes
- 20GardnerBooked at 75mins
- 10JutkiewiczSubstituted forVassellat 81'minutes
- 9AdamsSubstituted forRobertsat 86'minutes
- Andy Davies
- Shots on Target
Second Half ends, Rotherham United 1, Birmingham City 3.
Goal! Rotherham United 1, Birmingham City 3. Kerim Mrabti (Birmingham City) left footed shot from the left side of the box to the centre of the goal. Assisted by Jacques Maghoma.
Foul by Kerim Mrabti (Birmingham City).
Matt Crooks (Rotherham United) wins a free kick in the defensive half.
Kerim Mrabti (Birmingham City) wins a free kick in the attacking half.
Foul by Billy Jones (Rotherham United).
Offside, Birmingham City. Michael Morrison tries a through ball, but Marc Roberts is caught offside.
Jacques Maghoma (Birmingham City) wins a free kick in the attacking half.
Foul by Matt Crooks (Rotherham United).
Substitution, Birmingham City. Marc Roberts replaces Che Adams.
Gary Gardner (Birmingham City) hits the left post with a right footed shot from outside the box from a direct free kick.
Isaac Vassell (Birmingham City) wins a free kick in the attacking half.
Foul by Semi Ajayi (Rotherham United).
Offside, Birmingham City. Gary Gardner tries a through ball, but Che Adams is caught offside.
Foul by Che Adams (Birmingham City).
Joe Mattock (Rotherham United) wins a free kick in the attacking half.
Substitution, Birmingham City. Isaac Vassell replaces Lukas Jutkiewicz.
Attempt missed. Harlee Dean (Birmingham City) header from the centre of the box is high and wide to the left. Assisted by Jacques Maghoma with a cross following a set piece situation.
Foul by Jon Taylor (Rotherham United).