Danish striker Poul Hubertz sent Doncaster crashing to their third successive home defeat and maintained Millwall's hopes of a play-off place.
Hubertz volleyed the winner from close range after latching onto a cross from Neil Harris seven minutes from time.
Rovers had taken the lead after 13 minutes when James Coppinger fired in a low-angled drive.
But the Londoners restored parity when Hubertz crossed for Marvin Williams to blast home.
Doncaster: Sullivan, O'Connor, Lockwood, Gareth Roberts, Worley (Lee 72), Coppinger, Paul Green (Stock 79), Wilson, Thornton, Heffernan (Forte 56), Cadamarteri.
Subs Not Used: Dyer, Guy.
Goals: Coppinger 13.
Millwall: Pidgeley, Craig, Robinson, Shaw, Senda, Hackett (Ardley 64), Dunne, Brammer, Williams, Hubertz, Harris.
Subs Not Used: Day, Casement, Ashton, Fuseini. Booked: Robinson, Shaw.
Goals: Williams 38, Hubertz 83.
Ref: D Foster (Tyne & Wear).