Jordan Cousins' goal with seven minutes remaining looked at have sealed all three points, only for Danny Ward's injury time strike to rescue a point for the visitors.
The contest saw Guy Luzon take charge at the Valley for the first time, and he almost saw his new side go behind after seven minutes, when Ben Pringle was picked out at the back post, but saw his shot bounce off the post and away to safety.
The visitors appeared to settle far quicker in the opening stages than the hosts, and Matt Derbyshire poked a low cross from Zeki Fryers wide after eleven minutes.
Charlton almost took the lead with their first attempt, when Igor Vetokele placed a Chris Solly corner over the bar on 13 minutes.
The woodwork was struck for the second time in the game after 18 minutes, when a flowing counter-attack featuring Vetokele, Callum Harriott and Johann Gudmundsson finished with the Icelander chipping keeper Adam Collin - but the ball ricocheted off the posts and into the arms of the keeper.
The game then delivered very little in the way of goalscoring opportunities for either side, although the home side had more of the balance of the play. However, Andre Bikey-Amougou nearly put Charlton ahead on 38 minutes when he acrobatically connected to a Gudmundsson corner - but the ball went inches over the crossbar.
The second half started in a quiet manner, although Jordan Cousins was unable to get a shot away in the box nine minutes after the restart.
Midfielder Milos Veljkovic was more successful in getting an attempt in on goal on 57 minutes, but his shot went well wide.
Charlton made a change on the hour mark, with Vetokele being replaced by Tony Watt, a decision that was derided by the home supporters.
Rotherham believed they had a penalty on 68 minutes, thanks to a handball by Bikey, but referee Scott Duncan only awarded a corner to the visitors.
Rhoys Wiggins was called into action on 73 minutes when he headed a curled effort from Paul Green off the line - the first real attempt from the visitors on goal in the second half.
Referee Duncan waved away a penalty claim from Charlton after claims of handball in a crowded penalty area, Matt Derbyshire believed he finally netted after 77 minutes, but his strike was ruled out for offside.
The deadlock was finally broken with seven minutes of the game, when Cousins struck the ball past the left of Collin from six yards out.
Rotherham were denied a certain equaliser at the hands of keeper Marko Dmitrovic on 87 minutes, when he got his hand to a header from Paul Green.
Adam Hammill came agonisingly close before the whistle, before Ward finally equalised in injury time from a high ball into the box.