An injury-time header from Lewis Haldane brought Bristol Rovers an unlikely looking first home win of the season.
After dropping behind early on they had looked well out of it with a disjointed display.
This all changed for them with a hotly disputed penalty in the 77th minute when young sub Andy Williams went down.
Rickie Lambert slammed in the spot-kick and then well into the four minutes of added on time provided the high cross from the right which Haldane rose to power home.
Until the late revival Kenny Jackett was heading for a perfect start to his latest job as Millwall Manager - two wins from two starts. In the FA Cup a week ago the Lions had to come from behind, but here they were in front after just eight minutes.
The goal was driven in by substitute Ali Fuseini who had taken over from Alan Dunne, who had to go off with a muscle strain.
Losing his top scorer was the worst possible start for Jackett. With a dozen players already injured he fielded a full complement of five borrowed players.
But in a one-sided first half they were always the better unit than a Rovers side short of confidence.
The Millwall goal summed up this perfectly. A misplaced pass by Sammy Igoe deep in the visitors' half launched a Millwall counter-attack.
A bad clearance by Danny Coles then gave the ball to Fuseini. Finally in Rovers' goal Steve Phillips thought the shot was going wide of his right-hand post.
Before the game Phillips had been given an award for his 28 clean sheets last season.
He has yet to keep one at home this time around, but made an important save from Ahmet Brkovic early in the second half to keep his side in the game.