First-half goals from DJ Campbell and Daryl Murphy gave Town the points at the Valley.
Campbell sent a penalty wide before he put Blues on the way with a left foot finish just past the half hour mark.
Murphy added a second right on half-time in a first 45 minutes dominated by Blues but Charlton were better in the second-half and Danny Haynes’ penalty gave them a lifeline midway through the half but it wasn’t enough to deny Town the victory.
Aaron Cresswell sent a free-kick wide from 25 yards in the first effort at goal as Town edged the opening exchanges.
Stephen Henderson had to be alert to tip over former Blue Haynes’ cross, then Campbell almost got on the end of Guirane N’Daw’s ball over the top.
Carlos Edwards fired wide as Town pressed for an opener and just past the quarter hour Blues had a gilt edged chance to break the deadlock. Lee Martin was fouled inside the box by Emmanuel Frimpong but Campbell sent the spot-kick wide.
Campbell almost made amends a minute later, getting on the end of Murphy’s pass but his shot was half saved by Ben Hamer and Charlton cleared the danger.
Charlton’s openings were few and far between, Ricardo Fuller testing Henderson from 20 yards with a strike, Haynes then forced out inside the Town box.
The home fans were on their feet on the half hour though when Dale Stephens’ free-kick avoided Henderson’s full length dive but cannoned back off the post and was cleared.
Five minutes later Town were ahead, the ball pin-balled around the Addicks’ box before Edwards put it back in the danger area and Campbell did the rest from 10 yards with a left foot finish.
Henderson saved comfortably from Haynes as Charlton looked to recover but Blues continued to look the better side. Michael Morrison was yellow carded for a foul on Andy Drury, Cresswell sending a well-worked free-kick wide.
Town extended the lead right on half-time with Campbell robbing possession deep inside home terrority and feeding Martin. Hamer denied the former Manchester United wideman but not Murphy from the follow-up.
Charlton boss Chris Powell responded with two changes at the break, Johnnie Jackson and Bradley Pritchard on for Frimpong and Danny Green.
Henderson held firm from Rob Hulse’s header as Charlton enjoyed a flurry of crosses into the Town box as the second-half got underway, the Blues’ ‘keeper then punching clear as Fuller challenged.
The Addicks pressed Blues back for the first time in the game but Town still carried a threat on the break and Martin sent a curler just over.
Nigel Reo-Coker replaced Drury on the hour as Mick McCarthy freshened up his midfield.
Charlton continued to search for a way back into the game and on 71 minutes they found it, Martin guilty of a trip in the box and Haynes buried the penalty with confidence.
Fuller was denied by Tommy Smith’s challenge as the Addicks got on top. Henderson seeing out another danger from Haynes’ cross.
Jackson couldn’t convert when the ball broke to him in the box, Charlton then making a third change for the last 10 minutes with Yann Kermorgant replacing Fuller.
Stephens sent a 20 yard free-kick just wide as the game entered the closing stages, Luke Hyam replacing Campbell for the last five minutes, Jay Emmanuel-Thomas soon following for Murphy.
Charlton hurled ammunition into Hulse in the four minutes of added on time, Stephens sending an effort wide, even ‘keeper Hamer joined their attack for a corner but Blues held on for the three points.