Match ends, Charlton Athletic 2, Middlesbrough 0.
Charlton continued their upturn in form by beating second-placed Middlesbrough in a match overshadowed by protests both in and outside The Valley.
Jose Riga's men made it seven points from three games after Jorge Teixeira's header from a corner put them ahead.
With Jordan Rhodes misfiring, Boro could not find an equaliser in the absence of boss Aitor Karanka.
And the Addicks sealed it late on when Callum Harriott took advantage of defensive hesitation to fire home.
It was Boro's second successive defeat against a side in the relegation zone, having lost to Rotherham in midweek, and they remain seven points behind leaders Burnley.
Charlton stay next to bottom, but have closed the gap to MK Dons, in 21st, to five points.
The tone for the afternoon was set before kick-off as a coffin was brought to the ground by Charlton supporters unhappy with the way Roland Duchatelet and chief executive Katrien Meire are running the club - so it was perhaps appropriate that the match was to be refereed by Darren Deadman.
Middlesbrough, meanwhile, had Steve Agnew in charge, with head coach Karanka thinking over his future after leaving the training ground on Friday following a row.
The start was disrupted when a number of beach balls were thrown onto the pitch and whistles blown in the crowd later caused confusion for players.
Charlton, however, kept their concentration well and Nick Pope's save to prevent an own-goal by Rod Fanni was the closest Boro came before the break.
The visitors looked brighter after the interval, but £9m striker Rhodes was too slow after being found in a good position by Albert Adomah on the edge of the box and was crowded out by the Charlton defence.
And the Addicks took the lead when Johann Berg Gudmundsson's corner was met by Teixeira on the six-yard line, giving Dimi Konstantopoulos no chance.
The goal was followed by a pitch invasion by a small number of fans, while others left the ground in the 74th minute as the protests continued.
Adomah and Gaston Ramirez tested Pope as Boro pressed forward, but they were caught out at the back as the ball rebounded off Dael Fry and the impressive Harriott swept home his eighth goal of the season before limping off with a knock.
Charlton head coach Jose Riga:
"It's not only about the results, it's the way we got this result.
"All the sectors of the team, the defence, midfield, goalkeeper and strikers did a great job, and we need it against a team like Middlesbrough.
"It's never easy for players in that atmosphere, but it's the same for the staff and the players - just be focused on our job."
Middlesbrough assistant manager Steve Agnew:
"We've got to move forward, we've lost the game 2-0 and didn't perform well. We've just got to work towards the run-in.
"I think there is a strong mentality in the dressing room, and I think they have to keep that.
"I was disappointed with both the performance and the result, we conceded two poor goals, that's not like us.
"To play teams that we have in Rotherham and Charlton away from home are equally as difficult as playing Hull City next week."
- 50TeixeiraBooked at 60mins
- 21FoxBooked at 90mins
- 7Berg GudmundssonSubstituted forLennonat 90+3'minutes
- 12DiarraBooked at 64mins
- 11HarriottBooked at 81minsSubstituted forBergdichat 88'minutes
- 37LookmanSubstituted forGhoochannejhadat 78'minutes
- 8ClaytonBooked at 75mins
- 19DowningSubstituted forStuaniat 74'minutes
- 9RhodesBooked at 67minsSubstituted forNugentat 74'minutes
- 5de Laet
- 16de Sart
- Darren Deadman
- Shots on Target
Second Half ends, Charlton Athletic 2, Middlesbrough 0.
Corner, Charlton Athletic. Conceded by Ben Gibson.
Foul by Adam Clayton (Middlesbrough).
Jordan Cousins (Charlton Athletic) wins a free kick in the attacking half.
Attempt blocked. Jordan Cousins (Charlton Athletic) right footed shot from outside the box is blocked.
Corner, Middlesbrough. Conceded by Jordan Cousins.
Substitution, Charlton Athletic. Harry Lennon replaces Johann Berg Gudmundsson.
Morgan Fox (Charlton Athletic) is shown the yellow card for a bad foul.
Cristhian Stuani (Middlesbrough) wins a free kick on the right wing.
Foul by Morgan Fox (Charlton Athletic).
Offside, Charlton Athletic. Zakarya Bergdich tries a through ball, but Reza Ghoochannejhad is caught offside.
Attempt saved. David Nugent (Middlesbrough) header from the centre of the box is saved in the top centre of the goal. Assisted by Gastón Ramírez with a cross.
Corner, Middlesbrough. Conceded by Alou Diarra.
Attempt blocked. David Nugent (Middlesbrough) right footed shot from the centre of the box is blocked. Assisted by Gastón Ramírez.
Substitution, Charlton Athletic. Zakarya Bergdich replaces Callum Harriott because of an injury.
Delay over. They are ready to continue.
Delay in match Callum Harriott (Charlton Athletic) because of an injury.
Corner, Middlesbrough. Conceded by Marco Motta.
Callum Harriott (Charlton Athletic) is shown the yellow card for excessive celebration.