Leeds – who had 72% of the possession but hit the target with just four of their 19 attempts – drop to fourth, two points behind leaders West Brom, while Lee Bowyer’s Charlton move up to sixth.
Match-winner Bonne was making his first Championship start because of injuries to fellow strikers Lyle Taylor and Tomer Hemed, and was the beneficiary of some questionable goalkeeping from Casilla, who could only push Lockyer’s initial shot into the danger zone.
Leeds, meanwhile, handed on-loan Wolves forward Helder Costa a first league start in place of the injured Pablo Hernandez, and Bielsa brought on Eddie Nketiah and Forshaw at half-time in the hope of a response.
Darren Pratley almost put through his own goal, White glanced just wide and Nketiah scuffed off-target as Leeds searched for a leveller, but the hosts defended well to take the three points.
Charlton manager Lee Bowyer:
“To beat the best team in the league is always a good achievement. I thought we deserved it. We knew we were going to be under pressure at times because everyone who plays Leeds is.
“But we held our own and tactically got it spot on. I can’t praise my players any more – they are a group that never says die. To get three points just shows how far we have come as a club.
“If you don’t work hard for the team then you don’t play, they all know that. They are a good, honest bunch who want to do well in this division. They are hungry.”
Leeds United head coach Marcelo Bielsa:
“The difference between the two sides was big. We didn’t impose our superiority and that was the reason for what happened.
“They had one shot and scored one goal. We had possession and controlled the game.
“Our players were better than their players. We didn’t underestimate our opponents but we had more resources on the pitch.”