Lee Gregory and Aiden O’Brien were the scorers for the hosts as Town slipped to an away-day defeat in the Capital.
Mark Cooper was forced into three changes to his starting XI. Injuries to Anton Rodgers, Louis Thompson and Jermaine Hylton meant starts for Momar Bangoura, Henrik Ojamaa and Bradley Barry.
The first forty-five was dominated by the hosts. Lawrence Vigouroux was called into action early on to tip Steve Morison’s header over the bar before Tony Craig lashed over after a corner had dropped kindly for him in the area.
Just before the 20-minute mark, the host took the lead. Town were caught on the counter-attack and when Lee Gregory had sprung the offside trap, he drilled the ball into the back of the net.
Moments later it could have been two but for the intervention of Vigouroux, diving low down to his right to keep the shot out.
Seven minutes after going in front, the hosts doubled their advantage through Aiden O’Brien. Town could only clear their lines to the edge of the box where O’Brien was poised to lash a half-volley into the net via a touch from Vigouroux.
Before the break, Morison brought a high ball down on his chest beautifully before driving a low effort across goal and inches wide.
The hosts began the second half in similar fashion and spurned two golden opportunities to increase their lead. After Ben Gladwin had fired over for Swindon, Shane Ferguson was played through on goal but could only lift his shot over the bar. Seconds later, Gregory found himself one-on-one with Vigouroux but fired straight at the Town stopper.
Mark Cooper then rang the chances with Will Randall and Jordan Stewart replacing Ojamaa and Bangoura respectively.
Meanwhile, the hosts kept creating chances and Gregory and Morison both fired off target. Gladwin lashed over before Jordan Stewart shot at Archer from distance.
In between times, Millwall could and perhaps should have added a third: Morison hit the post before George Saville thumped the rebound against the crossbar.