The Saddlers stunned the visitors by taking a 36th-minute lead following a short corner by Richard Taundry. Full-back Mat Sadler's fierce drive flattened his team-mate Oliver Lancashire in the penalty box, but veteran Jon Macken whipped the rebound into the roof of the net for his fifth goal of the season.
However, Charlton showed their determination by bouncing back nine minutes later. Hogan Ephraim darted down the left before firing over a great cross which Yann Kermorgant leapt to power a header into the roof of the net to equalise.
Walsall, who have won only one of their last 15 league games, fought every inch of the way but Danny Hollands should have put the Addicks in front after 67 minutes instead of heading straight into the hands of keeper Jimmy Walker from 10 yards out.
The Saddlers had chances to win it too, substitutes Claude Gnakpa and George Bowerman went close while Charlton had penalty claims for handball turned down.
Walsall finished the game with 10 men after Sadler was sent off in the 89th minute for a second bookable offence.