Kieron Morris’ first goal of the season couldn’t prevent Walsall from falling to back-to-back defeats as a Nicky Ajose brace gave Charlton victory.
The former Swindon striker bundled the Addicks ahead just before half-time, only for Morris to equalise on 72 minutes with a low strike.
But Charlton secured the points two minutes later, when Josh Magennis squared for Ajose to tap in from close range.
Jon Whitney made one change to his Walsall team, with Isaiah Osbourne coming in for Liam Kinsella, who dropped to the bench.
Erhun Oztumer, fit again after missing the Chesterfield defeat through a back injury, was named among the substitutes.
After a quiet start, Charlton registered the game’s first attempt on 13 minutes when the impressive Ricky Holmes skipped forward down the right and set up Andrew Crofts to fire over from distance.
Walsall, searching for their first win - and goals - since the opening day, responded with Simeon Jackson having a low drive spilled by Declan Rudd, but Andreas Makris was unable to convert the rebound.
Rudd was called into action again shortly after as he dived full length to his left to push away Isaiah Osbourne’s cross-shot.
The match burst into life around the half-hour mark, with both teams going close in quick succession.
Addicks keeper Rudd had to be at his best to deny Jackson with his legs from point-blank range, before then parrying Morris’ follow-up volley.
Charlton went straight down the other end and came within a lick of paint of taking the lead, as Ajose’s audacious 18-yard chip clipped the top of the bar.
Chances were now coming at both ends; Jason McCarthy tested Rudd with a firm shot from distance and Etheridge then palmed away a venomous strike from Crofts.
The visitors made the breakthrough on the stroke of half-time, when Holmes’ cross was headed goalwards by Magennis and turned in by Ajose.
Half-time: Walsall 0-1 Charlton
Walsall nearly fell two goals down just moments after the resumption.
A stray pass from Etheridge was picked off by Chris Solly, who was clean through, but the keeper just about made amends, quickly coming off his line to block his right-footed attempt.
The home side enjoyed plenty of possession in the second half as they pushed for an equaliser.
Franck Moussa and James O’Connor each had efforts blocked by visiting skipper Johnnie Jackson, while substitute Amadou Bakayoko hooked over from a George Dobson corner.
And on 72 minutes Walsall managed to find a way through, when Morris drilled a low right-footed shot into the far corner.
But the Saddlers’ joy proved short-lived as Charlton restored their lead just two minutes later, Magennis squaring for the unmarked Ajose to tap home from a matter of yards.
The home side immediately went on the offensive, with Bakayoko’s left-footed drive forcing Rudd into a sharp one-handed save.
Russell Slade’s visitors almost put the result beyond doubt on 79 minutes when Ajose, on a hat-trick, rattled the bar with a miss-hit right-wing cross.
Walsall piled on the pressure in the closing stages with Florent Cuvelier volleying wide after a goalmouth scramble.
And the Saddlers almost found a dramatic last-gasp leveller, only for Rudd to produce an instinctive finger-tip save to turn Simeon Jackson’s superb volley onto the angle of post and bar.
Full-time: Walsall 1-2 Charlton
Team: Etheridge, Edwards, O’Connor, McCarthy, Dobson (Oztumer 81’), Jackson, Morris, Osbourne, Preston, Makris (Bakayoko 63’), Moussa (Cuvelier 75’).
Subs not used: MacGillivray, Kinsella, Ginnelly, Roberts.
Attendance: 4,586 (739 Charlton supporters).