Teenager Daniel Graham rescued a point for Middlesbrough with his first League goal four minutes after his introduction as a late substitute.
Graham headed the ball over Dean Kiely to the cheers of the crowd but was injured in the process.
After a facial injury Graham left the field to change a blood-stained shirt and won an ovation on his return.
Boro will no doubt consider themselves unlucky not to collect all three points after exerting tremendous second-half pressure.
Charlton, however, were the better side before the break.
This result virtually ends Boro's hopes of clinching a Champions League place. There have been positive noises from the Boro camp that they could still qualify but the gap between fourth-placed Everton is too much to make up at this stage of the season.
However, both sides can still battle for a UEFA Cup place.
Following a knee injury in training to Australian keeper Mark Schwarzer, Carlo Nash made his home league debut for Steve McClaren's side.
Nash, who has been in the shadows at the Riverside Stadium for four seasons, had the misfortune to have to pick the ball out of the net after 14 minutes following a deflected shot.
Boro failed to cut out the danger when Shaun Bartlett got the ball. The South African flicked the play to the onrushing Matt Holland and the Addicks skipper gave Nash no chance with a shot that was deflected into the net by Boro captain Gareth Southgate.
Charlton showed better movement off the ball in the first half and the Boro fans showed their displeasure with their side's performance at the half-time whistle.
Boro resumed with more fight after the interval with Chris Riggott scoring a deserved close-range equaliser.
The Teessiders piled on fierce pressure but Charlton hit back with a smash and grab goal when Bartlett made the most of a swift counter-attack.
Then came Graham's moment of glory in the tense final minutes.