The recalled Darren Bent put the visitors ahead, but there was to be no respite for under-pressure Villa manager Paul Lambert as headers from Danny Shittu and Marquis gave Millwall a well-deserved win.
Sadly, the fantastic result for Kenny Jackett's side was marred by crowd trouble, which forced the game to be stopped for five minutes early in the second half after several bottles were thrown at an assistsant referee.
Bent put Villa ahead on 22 minutes with a miskicked effort which crept past David Forde.
The goal did not act as a calming influence on Lambert's players, though, and Shittu quickly equalised as Villa were once again found wanting at a corner-kick, the Millwall skipper rising to power a header past Shay Given.
Shittu epitomised Millwall's drive as he marshalled his backline with his no-frills style of defending.
The tie looked set for a replay until Marquis headed Adam Smith's cross on to the bar and then reacted quickest to nod home the rebound.