An 83rd-minute winner from Millwall substitute Gary Alexander sent Coca-Cola League One leaders Leeds to their first defeat of the season.
Neil Harris opened the scoring for the home side after only three minutes, but Leeds were back on level terms nine minutes later through defender Patrick Kisnorbo.
Alexander came on for Steve Morison just after the hour and headed past Casper Ankergren, but Leeds stay top by a point from Charlton and have played a game less.
Charlton looked as if they might take over top spot when a John Nutter own goal put them in front at Gillingham with only 11 minutes remaining.
It was a lead that lasted only three minutes, however, with Simeon Jackson's shot getting past Robert Elliot.
Colchester are up to third following a 2-1 home win over Walsall as MK Dons crashed 3-1 at Southampton.
Kevin Lisbie scored both of Colchester's goals, the first after 26 minutes and then the winner from the penalty spot in the 62nd minute after Josh Payne had been fouled by Mark Hughes. Walsall's 28th minute equaliser had come from Darren Byfield.
Southampton fell behind just before the interval to a Jason Puncheon shot, but dominated the second half and scored through Dean Hammond (56), Richard Lambert (74) and substitute David Connolly at the end of added time.
There were also wins for Brentford, Oldham, Yeovil, Carlisle, Hartlepool, Huddersfield and Norwich, while Exeter and Wycombe played out a 1-1 draw with Barry Corr heading the equaliser in the dying moments to deny bottom club Wycombe only their second win and first away from home.
Copyright (c) PA Sport 2009, All Rights Reserved.
Do YOU want to write for GiveMeSport? Get started today by signing-up and submitting an article HERE: https://www.givemesport.com/writeforgms