Scunthorpe moved into second place in League One thanks to a 73rd-minute goal from substitute Steve Torpey.
The striker stabbed home Marcus Williams' cross after the full-back played a neat one-two with Andy Keogh.
Millwall dominated the game but failed to take any of their numerous chances and remain in the relegation zone.
Darren Byfield missed two good chances, Filipe Morais hit the side-netting and Poul Hubertz was twice denied by Scunthorpe keeper Josh Lillis.
Millwall: Pidgeley, Dunne, Shaw, Senda, Robinson, Hackett, Elliott, Ardley (Fuseini 83), Morais (Zebroski 83), Hubertz, Byfield.
Subs Not Used: Day, Lee, Grant.
Booked: Morais, Byfield, Hackett.
Scunthorpe: Lillis, Byrne, Hinds, Foster, Williams, Taylor, Goodwin, Baraclough (MacKenzie 74), Morris (Torpey 58), Sharp (Ridley 90), Keogh.
Subs Not Used: Butler, Foy.
Booked: Williams.
Goals: Torpey 74.
Att: 7,192
Ref: A Hall (W Midlands).