ADAM Armstrong came off the bench to assist and score to end Millwall's three-game winning league run as Blackburn Rovers struck twice late on at The Den.
Armstrong fired in a cross in the 86th minute that appeared to go in off Shaun Hutchinson at the near post.
A minute later Armstrong cut inside Hutchinson as Rover broke and found the far corner with a low shot.
Jordan Archer spent much of the second half on the edge of his D, a virtual spectator as Millwall toiled and pressed Blackburn back before Armstrong provided the game's only moments of real attacking quality. They were enough.
Ryan Leonard and Mahlon Romeo had efforts for the Lions, but that was about all they produced against a Rovers side that hadn't had a shot on target until those two late goals.
Millwall can have few complaints. This was a performance well below par and Rovers could keep Armstrong and Danny Graham in reserve until late on when the game became stretched.
That strategy worked out perfectly.
Neil Harris brought Hutchinson back into the side in place of Alex Pearce, and James Meredith started at left-back, with Murray Wallace on the bench.
Ben Thompson was also in the match-day squad along with Lee Gregory, who had recovered from a calf strain, though there was no place for Fred Onyedinma.
Millwall: 4-4-2: Archer; Romeo, Hutchinson, Cooper, Meredith (Williams, 87'); J Wallace, Leonard, Tunnicliffe, Ferguson; O'Brien (Gregory, 69'), Elliott (Morison, 3').
Subs: Martin, Williams, Thompson, Gregory, Pearce, Morison, M Wallace.
Referee: Robert Jones (Gavin Ward, 24')
Attendance: 13,862 (983)
Millwall lost Tom Elliott to injury in just the third minute. After landing awkwardly the striker looked in real discomfort holding his left arm, and Steve Morison was summoned from the bench.
And in the 24th minute – and for the second time this season at The Den – the referee then had to be replaced, Robert Jones limping off and Gavin Ward taking the whistle.
The most that could be said for the first half was that it was a good advert for a Christmas break in English football. Both sides were flat and had one effort on goal apiece, neither registering as even half-chances.
Millwall did produce some neat build-up play, most notably when Morison back-heeled inside to Shane Ferguson but after a one-two between the pair the Northern Ireland international crossed too close to David Raya.
That end product summed up a dire first half.
Six minutes after the break the Lions managed to muster another effort, but Aiden O'Brien had little chance of troubling Raya with a header and the ball trickled wide.
In the 57th minute Ferguson crossed to Morison at the back post but when the striker headed back across goal Leonard couldn't hook the ball on target.
Morison charging down an attempted clearance got the crowd to their feet and they urged their team forward. Leonard was first to a breaking ball 35 yards out and hit a half-volley that Raya palmed away.
Rovers had barely got into Millwall's half since the break, but moments after bringing on Graham, Harrison Reed's free-kick was headed off Romeo by Joe Nuttall and just cleared the post. Jack Rodwell headed over from the corner.
Harris introduced Gregory for the ineffective O'Brien with 21 minutes left as Millwall sought a breakthrough that hadn't looked like it would come.
Rovers' most creative player – though not tonight – Bradley Dack then departed after he couldn't influence the game. Armstrong, terroriser of Millwall with Coventry in August 2015, came on. He would have he last word again.
The hosts created their best chance up to then with 12 minutes left when Wallace found Gregory for the striker to tee up Romeo, but Raya was positioned well to keep hold of the full-back's shot at the near post.
It seemed at that stage if there was going to be a goal it would go to the home side, before Armstrong won it for Tony Mowbray's Rovers.
Image: Millwall FC