Injury hit Scunthorpe produced a storming second-half performance to move three points clear at the top of League One.
Missing half a team through injuries and suspensions, the home side struggled to get going in the early stages on a difficult playing surface.
New loan signing Jermaine Beckford from Leeds might twice have given them the lead.
When he broke free into the box his first shot was kept out by goalkeeper Lenny Pidgeley, and his follow-up effort was cleared off the line by Danny Senda.
Leading marksman Billy Sharp also forced a good save from Pidgeley with a deflected shot.
It was not until five minutes into the second half that Scunthorpe finally went in front, with midfield man Jim Goodwin applying the finishing touch from close range to a cross from Cleveland Taylor.
Three minutes later skipper Andy Crosby made it 2-0 from the penalty spot after Sharp had been brought down in the box by centre-back Paul Robinson.
Millwall struggled to offer much threat as an attacking force but twice brought the best out of Scunthorpe goalkeeper Joe Murphy.
First winger Tom Brighton saw a good effort turned away at the near post and then substitute Chris Zebroski also saw a cracking drive turned behind.
Scunthorpe grew in confidence throughout the second half, with fullback Dave Mulligan clipping the underside of the bar with a free kick from the edge of the box.
Beckford finally completed the scoring in the 79th minute with a simple tap home from a cross by Neil Mackenzie.