Patrick Bauer headed the visitors in front and the points were secured in controversial fashion by Josh Magennis after Rotherham's Jamie Proctor was felled in the build-up and eventually stretchered off.
Rotherham missed a glaring chance in the opening 10 minutes when Proctor bundled a shot wide from close-range after being picked out by Kieffer Moore.
Charlton took advantage of the let off on 16 minutes after Bauer rose highest to head in Jake Forster-Caskey's corner.
Semi Ajayi should have levelled but his six-yard header from Joe Newell's corner flew wide.
Charlton could have doubled their lead before the break but Richard O'Donnell turned behind Ricky Holmes' curling effort.
Moore took on a chance himself when Proctor was much better placed as Rotherham made a lively start to the second half.
Charlton secured the win in the 66th minute when Magennis headed in Holmes' dipping cross but Rotherham's fans were furious that referee Trevor Kettle had allowed play to continue with Proctor down.