Boudewijn Zenden's strike gave Middlesbrough their first Premiership win at the Valley and also ended Charlton's unbeaten League home record.
The visitors took the lead with an own goal when Zenden's shot was deflected in by Talal El Karkouri.
Jonatan Johansson rounded the keeper straight after the break to level. Zenden restored Boro's advantage with a chipped effort over Dean Kiely.
Johansson's shot was the closest Charlton came to getting the equaliser.
Charlton began positively without posing a threat to their opponents' goal and were consistently quicker to the loose ball.
On Middlesbrough's rare early forays into the Charlton box the Addicks defence looked less than comfortable, particularly from set-pieces.
Their defensive frailties were later exposed when Middlesbrough took the lead.
Chris Perry's poor defensive clearance on 21 minutes was punished when Zenden's strike hit Hasselbaink, then ricocheted off El Karkouri and went past the stranded Kiely.
Charlton had already come close to going behind when Stuart Downing's corner within the first quarter was heading straight in before it was repelled by keeper Dean Kiley.
El Karkouri struck powerfully with a free-kick which was narrowly deflected wide off the Middlesbrough wall.
The afternoon got worse for the Moroccan international when he was booked for a robust challenge from behind on George Boateng.
Charlton sprang into life in the second half and levelled with Johansson's composed finish after 46 miuntes. After a pinpoint through ball from Jason Euell, the striker rounded the advancing keeper Mark Schwarzer and slotted in.
Boro were quick to respond, with Hasselbaink forcing an excellent save from Kiely. But Boro were not to be denied and regained the lead on 58 minutes after an excellent chip by Zenden following impressive interplay between Hasselbaink and Mark Viduka.
As the match wore on and Charlton's frustration became evident and was manifested when Perry was booked after needlessly pulling the shirt of Viduka.
Charlton boss Alan Curbishley brought on Danny Murphy and Kevin Lisbie midway through the second half in a bid to get back into the game.
However, Boro held on for a well, deserved victory.
Charlton: Kiely, Young, Perry, El Karkouri, Hreidarsson,
Kishishev (Murphy 66), Holland, Euell, Thomas (Konchesky 82),
Bartlett (Lisbie 66), Johansson.
Subs Not Used: Andersen, Fortune.
Booked: El Karkouri, Perry, Murphy.
Goals: Johansson 46.
Middlesbrough: Schwarzer, McMahon, Riggott, Southgate,
Queudrue, Parlour, Boateng, Zenden, Downing (Doriva 75),
Hasselbaink, Viduka (Job 79).
Subs Not Used: Nash, Cooper, Morrison.
Goals: El Karkouri 21 og, Zenden 58.
Ref: M Halsey (Lancashire).