The defeat was especially costly for Claudio Ranieri's expensively assembled team after title rivals Manchester United and Arsenal both won at home.
United now top the table with 43 points, one more than Arsenal with Chelsea third on 39 points.
Manchester United rested Paul Scholes, Ryan Giggs and leading scorer Ruud van Nistelrooy but still beat Everton 3-2 and Arsenal won 3-0 against bottom club Wolverhampton Wanderers.
"Our attacking play was very, very good. We produced some excellent football and it was good for the players that came in to get an opportunity to express themselves," United boss Alex Ferguson told Sky TV.
Nicky Butt, in for the injured Roy Keane, volleyed United ahead with his first league goal of the season after eight minutes.
Gary Neville's own goal levelled the score before Brazilian Kleberson restored United's lead shortly before halftime, nodding in Neville's pinpoint delivery.
David Bellion scored his first league goal for the champions after 68 minutes before Duncan Ferguson pulled one back with a last-minute header.
Chelsea, who began the day level with Arsenal, fell behind in the first minute to Hermann Hreidarsson's header. Although Ranieri's side were soon level through John Terry's header, they never looked comfortable.
Matt Holland restored Charlton's lead with a thumping header from Jonatan Johansson's cross after 35 minutes and Johansson made it 3-1 just after the break, tapping in after some brilliant work by Paolo Di Canio.
Jason Euell stunned Chelsea with a fourth after 53 minutes and Eidur Gudjohnsen's goal
"The beginning of the second half we switched off and then it was very difficult," said Ranieri.
"We were poor defensively, they had too many chances, they scored four but could have scored more.
"We want to stay at the top with Arsenal and Manchester. We probably can only afford to lose another two games this season."
Unbeaten Arsenal were simply a class above Wolves, with Thierry Henry the chief tormentor.
The Frenchman's corner was turned in by Wolves defender Jody Craddock after 13 minutes and when he converted a pass from Patrick Vieira seven minutes later the Gunners were threatening to run riot.
Wolves held out until the 89th minute, but Henry struck again with a low shot past Michael Oakes to send Arsenal temporarily top of the league.
Manager Arsene Wenger was pleased with the result after three draws in their last four games. "We were sharp and dominated the game for 90 minutes," he said.
Fulham moved into fourth place after Louis Saha scored both goals in a 2-0 home victory against Southampton while Liverpool returned to form with a much-needed 3-1 victory against Bolton Wanderers at Anfield.
At the bottom, Patrik Berger scored twice to give Portsmouth a 2-0 win against Tottenham Hotspur and lift them out of the drop zone. Markus Babbel grabbed a late equaliser for Blackburn Rovers in a 2-2 home draw with Middlesbrough.
Leicester City slipped into the bottom three after drawing 1-1 at home to Newcastle United for whom Darren Ambrose scored a last-minute equaliser.