Substitute Scott McDonald's late goal rescued a point for Middlesbrough at the Riverside, putting an end to Charlton's slim play-off hopes.
Bradley Pritchard put the visitors ahead after only 32 seconds, and a Rhys Williams own goal doubled their lead.
But Marvin Emnes scored from close range to give Boro hope before McDonald headed home from a corner.
Chris Powell's Charlton started the day five points off the play-offs, and fall short with one game remaining.
In the first minute, Ricardo Fuller's long run down the left allowed him to set up Pritchard to shoot into the roof of the net from 12 yards.
Boro conceded again in the 17th minute when defender Williams deflected Charlton forward Yann Kermorgant's low cross from the right past his own goalkeeper, Jason Steele.
But Emnes gave Boro a chance with 14 minutes remaining, converting Grant Leadbitter's cross from the right.
Substitute McDonald impressed after coming on nine minutes into the second half, and capped off a fine day when he headed in Mustapha Carayol's corner on 87 minutes to grab a point for the hosts.
There was still time for Carayol and then Charlton's Danny Hollands to try to win the game for their respective sides, but both efforts failed to find the net.
Middlesbrough manager Tony Mowbray:
"I can understand the fans' frustrations. We built up their expectations in the first half of the season and have let them down in the second.
"And I was angry today. Maybe there wasn't a lot riding on the game for us but I told them it was the last home match and I expected a display.
"With respect, in my opinion we should be beating teams like Charlton here at our place. And the fans think so too."
Charlton manager Chris Powell:
"It is exasperating. For me the officials have got some big decisions wrong today and that is disappointing and frustrating.
"There was what looked like a clear-cut penalty in the first half and another in the second - and if you ask Tony he will tell you that Middlesbrough might have had one as well. That said, I was pleased with the perfromance if not the result.
"I'm pleased with the way the team have performed after coming up a league. It is a credit to the group and bodes well for next season."
Sorry, we were unable to load match stats, please try again.
Live Text Commentary
Full Time The match has reached full-time.90:00 +4:48
Salim Kerkar gives away a free kick for an unfair challenge on Rhys Williams. Jason Steele restarts play with the free kick.90:00 +4:33
The official flags Justin Hoyte offside. Ben Hamer restarts play with the free kick.90:00 +3:47
Shot on goal by Danny Hollands from just inside the area clears the crossbar.90:00 +2:27
Mustapha Carayol takes a shot. Ben Hamer makes a save.90:00 +2:10
Danny Hollands challenges Scott McDonald unfairly and gives away a free kick. Free kick taken by Scott McDonald.90:00 +0:52
Mark Gower takes the free kick.90:00 +0:52 Booking
Booking Grant Leadbitter goes into the referee's book for unsporting behaviour.90:00 +0:41
Grant Leadbitter challenges Mark Gower unfairly and gives away a free kick.89:49
The ball is delivered by Mustapha Carayol.88:50
A cross is delivered by Chris Solly, Rhys Williams makes a clearance.87:45
Foul by Grant Leadbitter on Bradley Pritchard, free kick awarded. Mark Gower takes the free kick.86:17
Assist on the goal came from Mustapha Carayol.86:17 Goal scored
Goal! - Scott McDonald - Middlesbro 2 - 2 Charlton Scott McDonald grabs a headed goal from inside the box. Middlesbrough 2-2 Charlton.85:47
Inswinging corner taken right-footed by Mustapha Carayol,83:10
Grant Leadbitter takes a shot from just outside the penalty area clears the crossbar.82:39
Free kick awarded for a foul by Salim Kerkar on Rhys Williams. Rhys Williams takes the free kick.79:34 Substitution
Substitution Salim Kerkar comes on in place of Callum Harriott.79:34 Substitution
Substitution Jonathan Obika on for Ricardo Fuller.78:35
The assistant referee flags for offside against Ricardo Fuller. Jason Steele restarts play with the free kick.
Booking Richard Smallwood receives a caution for unsporting behaviour.77:10 Substitution
Substitution Luke Williams comes on in place of Marvin Emnes.76:53
The official flags Ricardo Fuller offside. Andre Bikey takes the free kick.75:42
Assist by Grant Leadbitter.75:42 Goal scored
Goal! - Marvin Emnes - Middlesbro 1 - 2 Charlton Goal scored by Marvin Emnes from close in to the top right corner of the goal. Middlesbrough 1-2 Charlton.75:10
Foul by Yann Kermorgant on Andrew Halliday, free kick awarded. Andre Bikey takes the direct free kick.73:16
Mark Gower takes the outswinging corner, clearance made by Rhys Williams.70:58
Inswinging corner taken right-footed by Grant Leadbitter from the left by-line, Unfair challenge on Ben Hamer by Andre Bikey results in a free kick. Free kick taken by Ben Hamer.70:42
Foul by Dorian Dervite on Marvin Emnes, free kick awarded. Grant Leadbitter takes the free kick.64:29
Foul by Andre Bikey on Ricardo Fuller, free kick awarded. Ben Hamer restarts play with the free kick.62:06
The ball is swung over by Scott McDonald, Effort from inside the area by Emmanuel Ledesma misses to the left of the target.59:48
Scott McDonald takes a shot. Save by Ben Hamer.57:10
Inswinging corner taken from the right by-line by Emmanuel Ledesma, Ben Hamer makes a save.55:50
Unfair challenge on Michael Morrison by Scott McDonald results in a free kick. Free kick taken by Ben Hamer.55:25
Yann Kermorgant sends in a cross, Header from deep inside the area by Ricardo Fuller goes harmlessly over the crossbar.54:41
Scott McDonald takes a shot. Save by Ben Hamer.53:17
Andrew Halliday takes the free kick.53:17 Substitution
Substitution Emmanuel Ledesma replaces Adam Reach.53:17 Substitution
Substitution Curtis Main goes off and Scott McDonald comes on.53:17
Free kick awarded for a foul by Michael Morrison on Marvin Emnes.45:32
Danny Hollands challenges Curtis Main unfairly and gives away a free kick. Grant Leadbitter takes the free kick.45:01
The game restarts for the second half.45:00 +2:50 Half time
Half Time It is the end of the first-half.45:00 +1:46
Adam Reach takes a corner.45:00 +1:20
Corner taken by Adam Reach from the right by-line, clearance by Michael Morrison.44:31
Corner from the left by-line taken by Mark Gower, clearance made by Adam Reach.41:00
Shot by Adam Reach from 25 yards. Save by Ben Hamer.40:06
Unfair challenge on Andre Bikey by Callum Harriott results in a free kick. Direct free kick taken by Jason Steele.39:26
Marvin Emnes is caught offside. Dorian Dervite restarts play with the free kick.38:14
Yann Kermorgant gives away a free kick for an unfair challenge on Rhys Williams. Direct free kick taken by Andre Bikey.37:48
Foul by Yann Kermorgant on Andre Bikey, free kick awarded. Andre Bikey takes the direct free kick.35:16
The ball is swung over by Adam Reach.33:28
The ball is sent over by Andrew Halliday, Dorian Dervite manages to make a clearance.33:04
Foul by Yann Kermorgant on Adam Reach, free kick awarded. Justin Hoyte takes the direct free kick.31:54
Yann Kermorgant has an effort at goal from a long way out that goes wide of the right-hand post.27:36
Bradley Pritchard has an effort at goal from just inside the box that misses to the right of the target.24:59
Right-footed shot by Richard Smallwood went wide right of the target.24:02
The ball is sent over by Yann Kermorgant, clearance made by Justin Hoyte.19:31
Corner from the left by-line taken by Mark Gower, Rhys Williams makes a clearance.18:24
Unfair challenge on Callum Harriott by Richard Smallwood results in a free kick. Mark Gower takes the free kick.16:30
Yann Kermorgant provided the assist for the goal.16:30 Goal scored
Goal! - Rhys Williams - Middlesbro 0 - 2 Charlton Rhys Williams puts the ball into his own net. Middlesbrough 0-2 Charlton.15:36
Foul by Andre Bikey on Bradley Pritchard, free kick awarded. Direct free kick taken by Mark Gower.12:51
Mustapha Carayol takes a shot. Save by Ben Hamer.10:51
Free kick awarded for an unfair challenge on Michael Morrison by Mustapha Carayol. Ben Hamer takes the direct free kick.7:10
Free kick awarded for an unfair challenge on Chris Solly by Andre Bikey. Direct free kick taken by Ben Hamer.6:47
Corner taken by Grant Leadbitter, Chris Solly manages to make a clearance.6:15
Inswinging corner taken right-footed by Grant Leadbitter, Rhoys Wiggins makes a clearance.3:06
The ball is delivered by Mustapha Carayol, Chris Solly gets a block in. Corner taken right-footed by Grant Leadbitter, clearance made by Yann Kermorgant.2:01
Mustapha Carayol takes a shot from just inside the penalty box which clears the bar.0:45
Assist on the goal came from Ricardo Fuller.0:45 Goal scored
Goal! - Bradley Pritchard - Middlesbro 0 - 1 Charlton Bradley Pritchard scores a goal from deep inside the penalty box high into the middle of the goal. Middlesbrough 0-1 Charlton.0:32
Ricardo Fuller crosses the ball,0:00
The match gets underway.
Live data and text provided by our data suppliers