Charlton went in front in the 13th minute courtesy of a simple set-piece strike. Grant Basey swung in a corner-kick and defender Sam Sodje was on hand to head home through a crowd of players.
Jose Semedo also went close, before Deon Burton fired a low, angled strike inches wide.
Stockport should have levelled on 27 minutes, but Nicholas Bignall could not stretch enough to meet David Poole's cross. Just before half-time Stockport midfielder Paul Turnbull thumped a 20-yard drive against the crossbar.
Charlton's Scott Wagstaff then went on to put the game to bed in the second half. First he somehow blazed a simple effort way over the bar in the 68th minute, before then doubling Charlton's lead five minutes later when he latched onto David Mooney's pass before slotting home from 15 yards.
Stockport got a goal back in added time when goalkeeper Rob Elliot inadvertently knocked Adam Griffin's cross into his own goal, before Stockport's Carl Baker was dismissed following a late scuffle involving almost all the players.