Match ends, Queens Park Rangers 2, Charlton Athletic 1.
Charlton's hopes of avoiding relegation from the Championship were dented severely by Nasser el Khayati's stoppage-time winner for QPR.
El Khayati's curler sealed a defeat that left the Addicks 10 points adrift of safety with five games left.
Jordan Cousins looked to have earned the visitors a point when he fired in from the edge of the box on his left just after the hour mark.
Matt Phillips had earlier given Rangers a fortuitous lead with a cross-shot.
The visitors went into the game on the back of a two-match unbeaten run, but found mid-table Rangers too tough to handle.
Seb Polter and Tjaronn Chery had chances before Phillips' opener, while Jose Riga's side were limited to Callum Harriott's shot off the bar.
Cousins scored against the run of play, but Ademola Lookman and Igor Vetokele passed up great chances to put Charlton in front.
And El Khayati's strike lit up Loftus Road and ensured a miserable trip back to south-east London for the seemingly doomed Addicks.
QPR manager Jimmy Floyd Hasselbaink:
"At times you need a bit of luck and your keeper to be smart. I must say that Alex Smithies won us the game today.
"I am happy for Nasser but more happy for the team that we stuck at it, kept going, and in the end we finished them off even though we needed help from our keeper.
"I must say we put ourselves in that difficult situation as we had the chance to score and make it 2-0, and if you take that you go on and score three or four.
"If that chance goes in it kills Charlton's spirit. But it gave them more 'animal' to carry on."
Charlton boss Jose Riga:
"At the end of the match, conceding a goal like that when you have the possibility yourselves to win is cruel.
"It was a good performance. Okay, the first half was more complicated and we conceded a goal, but the reaction was good.
"It's a sad story. The only hope is that the Charlton fans can see again that the side was really competitive, with not just good spirit, but a style of play.
"When you do your job as we did today, at least your own feeling is that you have done your job."
- 24PerchSubstituted forKpekawaat 55'minutesBooked at 66mins
- 5OnuohaBooked at 86mins
- 7PhillipsSubstituted forGladwinat 72'minutesBooked at 90mins
- 23HoilettSubstituted forEl Khayatiat 85'minutes
- 19El Khayati
- 21FoxSubstituted forLennonat 83'minutes
- 37LookmanSubstituted forJacksonat 89'minutes
- 25SanogoSubstituted forMakienokat 34'minutes
- Andy Madley
- Shots on Target
Second Half ends, Queens Park Rangers 2, Charlton Athletic 1.
Attempt saved. Ben Gladwin (Queens Park Rangers) right footed shot from more than 35 yards is saved in the centre of the goal.
Attempt blocked. Jordan Cousins (Charlton Athletic) right footed shot from outside the box is blocked. Assisted by Harry Lennon.
Goal! Queens Park Rangers 2, Charlton Athletic 1. Abdenasser El Khayati (Queens Park Rangers) right footed shot from the left side of the box to the top right corner. Assisted by Massimo Luongo.
Attempt saved. Igor Vetokele (Charlton Athletic) header from the centre of the box is saved in the top right corner. Assisted by Johnnie Jackson with a headed pass.
Ben Gladwin (Queens Park Rangers) is shown the yellow card for a bad foul.
Foul by Ben Gladwin (Queens Park Rangers).
Jordan Cousins (Charlton Athletic) wins a free kick in the defensive half.
Corner, Queens Park Rangers. Conceded by Jorge Teixeira.
Offside, Queens Park Rangers. Ben Gladwin tries a through ball, but Abdenasser El Khayati is caught offside.
Substitution, Charlton Athletic. Johnnie Jackson replaces Ademola Lookman.
Attempt missed. Callum Harriott (Charlton Athletic) left footed shot from the centre of the box is too high. Assisted by Simon Makienok with a cross.
Attempt saved. Igor Vetokele (Charlton Athletic) right footed shot from the centre of the box is saved in the bottom left corner. Assisted by Jordan Cousins with a through ball.
Attempt blocked. Tjaronn Chery (Queens Park Rangers) left footed shot from outside the box is blocked. Assisted by Abdenasser El Khayati.
Nedum Onuoha (Queens Park Rangers) is shown the yellow card.
Attempt missed. Ademola Lookman (Charlton Athletic) right footed shot from the centre of the box is too high. Assisted by Igor Vetokele.
Substitution, Queens Park Rangers. Abdenasser El Khayati replaces Junior Hoilett.
Attempt missed. Ademola Lookman (Charlton Athletic) right footed shot from outside the box is too high from a direct free kick.
Foul by Karl Henry (Queens Park Rangers).