Bristol City's automatic promotion push will go to the final day after they were beaten by Paul Robinson's second-half goal.
The visitors started well, with Jamie McCombe and Liam Fontaine going close early on but then Neil Harris almost put Milwall in front with a header.
And The Lions did take the lead in the 78th minute when Robinson picked up the ball from Harris and slotted home.
The Robins must now beat Rotherham next week to be certain of second spot.
Millwall: Pidgeley, Senda, Robinson, Shaw, Craig, Dunne, Elliott (Hubertz 69), Brammer, Smith (Hackett 69), Harris, Byfield (Williams 90).
Subs Not Used: Day, May.
Booked: Dunne, Harris, Byfield.
Goals: Robinson 78.
Bristol City: Basso, Orr, Fontaine, McCombe, McAllister, Betsy (Smith 75), Russell (Skuse 68), Johnson, Brian Wilson (Jevons 75), Noble, Showunmi.
Subs Not Used: Keogh, Thomas.
Booked: Betsy.
Att: 12,547
Ref: R Shoebridge (Derbyshire).