Match ends, Birmingham City 2, Blackburn Rovers 1.
Ten-man Birmingham City struck late to knock fellow Championship side Blackburn Rovers out of the FA Cup.
The third-round tie had looked destined for a replay after Adam Armstrong fired Rovers level from the penalty spot as the hosts' Ivan Sunjic was sent off.
But the Blues - who had taken an early lead through midfielder Dan Crowley's well-struck opener - went through with Jeremie Bela's 90th-minute low finish.
The defeat saw Rovers exit in the third round for a third season in succession.
- Live: FA Cup third-round - in-play clips, radio and text coverage
- Watch all the latest FA Cup goals, highlights and reaction here
Bela's dramatic winner spared the blushes of his team-mate Sunjic, whose calamitous cameo had looked set to see the hosts throw the game away.
Just 98 seconds after coming on as a second-half substitute, the Croatia midfielder gave the ball away and then brought down former Blues striker Sam Gallagher in the area.
Armstrong fired in the penalty to level for Rovers, who had missed good chances through Gallagher earlier in the half, as the visitors cancelled out Crowley's first goal for City.
For Birmingham, who made seven changes to their side, the victory ended their dismal run of five defeats in six matches, while Rovers - who changed three - saw their winless streak extend to five games in all competitions.
Birmingham boss Pep Clotet told BBC WM 95.6: "It feels like a double or triple win.
"The victory is deserved. It is not easy to win when you have 10 men. When we could, we attacked, with a player less.
"It shows that, slowly, our football is getting there. It was a massive effort from the team and showed a lot of unity, strength and belief in themselves.
"[Bela] is getting much fitter now and getting up to tempo. The work he did - and the whole team, defensively - is a massive credit to everyone, getting a win that was elusive to us in the past few games."
Blackburn boss Tony Mowbray told BBC Radio Lancashire: "We had a lot of domination of the game and the ball. We were misfiring up front today.
"We got sucker-punched at the end. You couldn't really see them [Birmingham] scoring. They couldn't get in our half, let alone score.
"That's football. It's why people love it. For us, as they say, we [now] have to concentrate on the league.
"It's unbelievable to think that we only scored from a penalty kick today, with the amount of play we had in the final third, but we have to accept it. We have to be better, collectively and individually."
- 14Clarke-SalterSubstituted forHardingat 69'minutes
- 20GardnerSubstituted forSunjicat 58'minutesBooked at 60mins
- 15MonteroSubstituted forBelaat 45'minutes
- 24GiménezBooked at 54mins
- 21Medina Delgado
- 31BennettSubstituted forWilliamsat 39'minutes
- 19DowningSubstituted forBuckleyat 78'minutes
- 20BreretonSubstituted forChapmanat 57'minutes
- Oliver Langford
- Shots on Target
Second Half ends, Birmingham City 2, Blackburn Rovers 1.
Foul by Álvaro Giménez (Birmingham City).
Bradley Johnson (Blackburn Rovers) wins a free kick in the defensive half.
Kristian Pedersen (Birmingham City) wins a free kick in the defensive half.
Foul by Adam Armstrong (Blackburn Rovers).
Goal! Birmingham City 2, Blackburn Rovers 1. Jérémie Bela (Birmingham City) right footed shot from a difficult angle on the right to the centre of the goal. Assisted by Jacques Maghoma.
Attempt saved. Adam Armstrong (Blackburn Rovers) left footed shot from outside the box is saved in the top centre of the goal.
Foul by John Buckley (Blackburn Rovers).
Jacques Maghoma (Birmingham City) wins a free kick in the defensive half.
Attempt saved. Derrick Williams (Blackburn Rovers) left footed shot from outside the box is saved in the bottom left corner.
Attempt saved. Joe Rothwell (Blackburn Rovers) right footed shot from outside the box is saved in the top centre of the goal.
Substitution, Blackburn Rovers. John Buckley replaces Stewart Downing.
Foul by Daniel Crowley (Birmingham City).
Joe Rothwell (Blackburn Rovers) wins a free kick on the right wing.
Attempt missed. Adam Armstrong (Blackburn Rovers) right footed shot from the centre of the box is close, but misses to the right.
Corner, Birmingham City. Conceded by Derrick Williams.
Substitution, Birmingham City. Wes Harding replaces Jake Clarke-Salter.
Attempt missed. Harry Chapman (Blackburn Rovers) right footed shot from a difficult angle and long range on the right misses to the right.
Corner, Birmingham City. Conceded by Jayson Leutwiler.