Two second-half goals from Darren Bent earned Charlton a fortuitous win over a Boro side missing several key men ahead of Wednesday's Uefa Cup tie with Roma.
Charlton celebrate Darren Bent's winner
Boro had the edge in a lacklustre first half, which was overshadowed by pre-match talk linking Charlton boss Alan Curbishley to the England job.
But the Addicks went ahead when Chris Powell's pin-point, left-wing cross was met by the head of Bent.
Mark Viduka scored a fine equaliser but Bent won it from close range late on.
Boro, in the middle of a last-16 tie with Roma, made nine changes from Thursday's 1-0 first-leg win over the Italians.
Only Mark Schwarzer and Emanuel Pogatetz retained their places and there was further disruption when Andrew Davies replaced Tony McMahon at right-back after an early injury.
However, despite the reshuffle, the new-look visitors dominated the first half.
Viduka threatened an early goal but hooked his shot straight at Thomas Myhre from Doriva's right-wing free-kick.
Ray Parlour was next to try his luck, exchanging passes with Doriva before thumping in a 25-yard shot, which Myhre did well to claw away from his top corner.
With Charlton completely subdued, Myhre then threw out a strong arm to parry Massimo Maccarone's close-range effort.
Much of the visitors' good play stemmed from Adam Johnson, with the 18-year-old winger winning a string of free-kicks that led to Charlton captain Luke Young being booked.
Maccarone eventually had the ball in the net minutes before the interval but a marginal offside decision denied the visitors the half-time lead they so richly deserved.
Alan Curbishley rang the changes at half-time, replacing the ineffective Jay Bothroyd and Bryan Hughes with Jason Euell and Jerome Thomas.
And the hosts certainly showed more purpose, with Darren Ambrose drifting a header wide and Matt Holland seeing his shot charged down by Davies.
The momentum was with the home side and they capitalised with 17 minutes remaining.
Powell's cross from the left was inch perfect and Bent rose above Pogatetz to head his 18th goal of the season past Schwarzer.
Middlesbrough were unfortunate to be behind and responded by introducing top scorer Yakubu Aiyegbeni.
But it was strike partner Viduka who put them level after 80 minutes with a stunning strike.
The Australian collected a long ball forward on his chest 30 yards out, hooked it over his head, turned and hit a looping shot over Myhre.
But Charlton would not be denied and Bent slotted home Young's low cross at the far post to ensure the points remained at The Valley.
Charlton: Myhre, Young, Perry, Hreidarsson, Powell, Kishishev, Holland, Hughes (Thomas 45), Ambrose (Bartlett 75), Darren Bent, Bothroyd (Euell 45).
Subs Not Used: Andersen, Spector.
Booked: Hughes, Young.
Goals: Darren Bent 73, 86.
Middlesbrough: Schwarzer, McMahon (Davies 13), Ehiogu, Pogatetz, Queudrue, Maccarone (Yakubu 76), Parlour (Cattermole 69), Doriva, Taylor, Johnson, Viduka.
Subs Not Used: Jones, Riggott.
Goals: Viduka 81.
Referee: A Wiley (Staffordshire).