Match ends, Blackburn Rovers 2, Millwall 0.
Millwall's hopes of moving out of the Championship relegation zone suffered a huge blow as they lost to two late Blackburn goals at Ewood Park.
Rudy Gestede put Rovers ahead on 78 minutes with his 20th strike of the season after he latched onto a deep, left-wing cross.
And deep into injury time Jordan Rhodes made the game safe as he raced clear to slot past David Forde.
The result leaves Millwall four points adrift of safety with two games left.
It means interim boss Neil Harris's prospects of keeping the Lions in the second tier hinge on winning their final two games - against promotion-chasing Derby and Wolves - and hoping Rotherham do not win any any of their remaining three games.
They had chances to beat a Rovers side with very little to play for this season, with Martyn Woolford missing two opportunities and seeing another cleared off the line by Tommy Spurr.
But the London side had not won any of their last six away games, and Blackburn threatened when Chris Brown headed against the bar.
Paris Cowan-Hall squandered a one-on-one for the visitors before Gestede volleyed home late on, and Rhodes then finished off a counter-attack at the death.
Blackburn boss Gary Bowyer: "I've been saying all along, we've got a hell of a lot to play for still.
"We want to finish as high as we can and individuals have got personal targets to reach and hit and you saw two of them get on the scoresheet tonight.
"We could have had more, Tom Cairney's been wasteful in front of goal. He should have done better and we should have been cuter setting one or two up but overall we're pleased with the clinical finishing of the front two again."
Millwall boss Neil Harris: "I'm frustrated, definitely. Their two goalscorers have scored more goals than my whole squad so I think it's clear to see why they've won that game 2-0.
"We talk about the positives, how good we were, how many chances we created, but ultimately to win games of football you have to score goals.
"I thought the whole team was outstanding, the subs were outstanding.
"Spirit, we've got plenty of that, togetherness and desire, and ability in the squad but it doesn't change the result."
- 4KilgallonSubstituted forLenihanat 37'minutes
- 21TaylorSubstituted forCairneyat 71'minutes
- 9BrownSubstituted forRhodesat 71'minutes
- 21HardingSubstituted forTaylor-Fletcherat 83'minutes
- 18GueyeSubstituted forCowan-Hallat 61'minutesBooked at 73mins
- 19FullerSubstituted forGregoryat 61'minutes
- Nigel Miller
- Shots on Target
Second Half ends, Blackburn Rovers 2, Millwall 0.
Delay over. They are ready to continue.
Delay in match Martyn Woolford (Millwall) because of an injury.
Goal! Blackburn Rovers 2, Millwall 0. Jordan Rhodes (Blackburn Rovers) right footed shot from outside the box to the bottom right corner. Assisted by Rudy Gestede with a through ball following a fast break.
Attempt missed. Gary Taylor-Fletcher (Millwall) right footed shot from outside the box is close, but misses to the right. Assisted by Alan Dunne.
Attempt saved. Tom Cairney (Blackburn Rovers) left footed shot from the centre of the box is saved in the centre of the goal. Assisted by Craig Conway.
Attempt blocked. Martyn Woolford (Millwall) left footed shot from outside the box is blocked.
Attempt blocked. Nicky Bailey (Millwall) left footed shot from the centre of the box is blocked. Assisted by Mark Beevers.
Attempt missed. Rudy Gestede (Blackburn Rovers) left footed shot from very close range misses to the left. Assisted by Ben Marshall.
Attempt saved. Aiden O'Brien (Millwall) right footed shot from the left side of the box is saved in the bottom right corner. Assisted by Gary Taylor-Fletcher with a headed pass.
Attempt missed. Markus Olsson (Blackburn Rovers) left footed shot from outside the box is high and wide to the left following a corner.
Corner, Blackburn Rovers. Conceded by Sid Nelson.
Attempt blocked. Tom Cairney (Blackburn Rovers) left footed shot from outside the box is blocked. Assisted by Darragh Lenihan with a headed pass.
Offside, Blackburn Rovers. Tom Cairney tries a through ball, but Jordan Rhodes is caught offside.
Attempt missed. Tom Cairney (Blackburn Rovers) left footed shot from the centre of the box is close, but misses to the right.
Substitution, Millwall. Gary Taylor-Fletcher replaces Dan Harding.
Corner, Blackburn Rovers. Conceded by Mark Beevers.
Attempt blocked. Tom Cairney (Blackburn Rovers) left footed shot from the centre of the box is blocked. Assisted by Craig Conway.
Goal! Blackburn Rovers 1, Millwall 0. Rudy Gestede (Blackburn Rovers) right footed shot from the right side of the six yard box to the top right corner.