Top scorer Nicky Maynard tucked home a 93rd minute winner as Bristol City snatched all three points at Ashton Gate tonight.
The game seemed destined for a stalemate before Maynard's late strike, which sees the Robins overtake Millwall into 19th in the Championship.
Early on the hosts commanded much of the possession but it was Millwall who should have opened the scoring when Hamer Bouazza fired over from close range.
Liam Trotter wasted a similar chance from inside the six-yard box minutes later, scuffing his effort wide of the upright.
In the second period chances were few and far between, with Tony Craig almost gifting the home side the lead by misdirecting a clearance against his own post before Maynard stole the game.
There was late drama when Darius Henderson went through one-on-one at the other end but David James kept the forward out.
It may be the last time Bristol fans get to see Maynard as he has been heavily linked with a move away from Ashton Gate in January, having failed to secure a new contract.