Goals from Lyle Taylor and Krystian Bielik condemned the Saddlers to a fourth defeat in five matches and lifted Charlton into the League One play-off position.
Like against Burton, the Saddlers started on the back foot and conceded an early penalty as a lunging George Dobson brought down Tariqe Fosu in the area.
Lyle Taylor – with four goals in his previous four games against Walsall – sent Liam Roberts the wrong way from the spot to give the Addicks a sixth-minute lead.
Josh Gordon had the hosts’ first sight of goal, driving purposefully towards the box before firing over from 20 yards.
Lee Bowyer’s visitors were controlling proceedings and threatened a second through the lively Fosu.
Collecting Taylor’s back-heel inside the area, the midfielder cut inside his man but Nicky Devlin came across to block his goalbound drive.
Only the reactions of Roberts denied Charlton a second on the stroke of half-time, the keeper stretching out his left hand to claw out Karlan Grant’s free header from Taylor’s pinpoint cross.
But the South East London club did double their advantage six minutes after the restart.
A Josh Cullen corner dropped kindly for Krystian Bielik – who failed to make an appearance on loan at Walsall last season due to injury – to steer the ball home from six yards.
Josh Ginnelly wasn’t too far away from halving the deficit with a 25-yard free-kick which curled over.
Chances, though, were proving few and far between, the Addicks looking comfortable with their two-goal lead.
The Saddlers’ best chance came 13 minutes from time when Morgan Ferrier’s right-footed drive was palmed away by the underworked Jed Steer.
Bielik almost added another at the other end with an acrobatic improvised volley from a corner which flashed over.
That proved the last meaningful opportunity of the match as Charlton comfortably saw out the three points.
Saddlers team (4-4-2): L Roberts; Devlin, Martin, Guthrie, Leahy; Gordon (Ismail 75’), Osbourne (Kinsella 45’), Dobson, Ginnelly (Ronan 85’); Cook, Ferrier.
Subs not used: Dunn, Morris, Johnson, Wilson.
Attendance: 3,719 (328 Charlton supporters).