Match ends, Wolverhampton Wanderers 1, Queens Park Rangers 2.
Struggling Queens Park Rangers ended a run of six straight defeats as they beat Wolves for the third straight time at Molineux with a scrappy late winner.
Idrissa Sylla shot the Hoops ahead from Pawel Wszolek's 53rd-minute cross.
Wolves midfielder Edwards levelled when he turned home a cross from Helder Costa on 61 minutes.
But Wszolek then poked home low left-footed into the bottom corner to earn manager Ian Holloway only his second win since returning to the club.
While Paul Lambert's Wolves were unchanged for the third game in a row after back-to-back victories, Holloway made four changes to the QPR side that were beaten 3-0 at Brighton on Tuesday.
One of them was forced as defender Joel Lynch was drafted in for the suspended Nedum Onuoha, but he also gave striker Jamie Mackie his first start of the season following his ankle injury.
And he altered his midfield by bringing in Republic of Ireland Under-21 international Ryan Manning for his debut and recalling Sandro for only his fifth start of the campaign.
QPR's six straight defeats had included a 2-1 home defeat by Wolves on 1 December - but after a goalless first half, it began to look as if Holloway's tinkering had worked when Wszolek set up Sylla to score the opener, his seventh goal of the season - and his side's first in 413 minutes of football.
Eight minutes later, Wales international Edwards levelled with the 60th goal of his career and his seventh of the season - six of which have now come in his last nine games.
But Wszolek was to have the final word on 87 minutes to lift QPR two places up the table to 19th, within two points of 16th-placed Wolves.
Wolves head coach Paul Lambert told BBC WM:
"That's as good as we've played in my time here. All it lacked was that finishing touch. But football has a funny way of knocking you when you play well.
"We were playing against a team fighting for their lives who were due a bit of luck.
"They've had a bit of a ricochet bounce their way for the winning goal and the lad has poked it in."
QPR manager Ian Holloway:
"In the last couple of games we've played some wonderful football and got nothing. Today it was against the run of play. We've come here and stolen the points but that is what you have to do in football sometimes.
"It was probably the worst that we've played but the best heart that we've shown. When they got the equaliser, it looked ominous. But I asked for fight and spirit and that's as good as I've seen.
"The winner is the luckiest, ugliest goal you'll ever see. But Pawel deserved that as he chases and chases and sometimes the harder you work the luckier you get."
- 19PriceBooked at 32mins
- 17Hélder Costa
- 26EnobakhareSubstituted forMasonat 71'minutes
- 9DickoSubstituted forBödvarssonat 83'minutes
- 24PerchBooked at 77mins
- 3BidwellBooked at 66mins
- 30Guimaraes CordeiroSubstituted forBorysiukat 68'minutes
- 41ManningBooked at 65mins
- 23N'GbakotoSubstituted forWashingtonat 78'minutes
- 19El Khayati
- Lee Probert
- Shots on Target
Second Half ends, Wolverhampton Wanderers 1, Queens Park Rangers 2.
Delay over. They are ready to continue.
Delay in match Matt Doherty (Wolverhampton Wanderers) because of an injury.
Goal! Wolverhampton Wanderers 1, Queens Park Rangers 2. Pawel Wszolek (Queens Park Rangers) left footed shot from the centre of the box to the bottom right corner.
Attempt blocked. Jamie Mackie (Queens Park Rangers) right footed shot from outside the box is blocked.
Attempt saved. Jón Dadi Bödvarsson (Wolverhampton Wanderers) header from the centre of the box is saved in the centre of the goal. Assisted by Jack Price with a through ball.
Matt Doherty (Wolverhampton Wanderers) wins a free kick in the attacking half.
Foul by Ariel Borysiuk (Queens Park Rangers).
Substitution, Wolverhampton Wanderers. Jón Dadi Bödvarsson replaces Nouha Dicko.
Attempt blocked. Ivan Cavaleiro (Wolverhampton Wanderers) right footed shot from the right side of the box is blocked. Assisted by Conor Coady with a headed pass.
Substitution, Queens Park Rangers. Conor Washington replaces Yeni N'Gbakoto.
James Perch (Queens Park Rangers) is shown the yellow card.
Attempt saved. Matt Doherty (Wolverhampton Wanderers) right footed shot from outside the box is saved in the centre of the goal. Assisted by Ivan Cavaleiro.
Attempt blocked. Joe Mason (Wolverhampton Wanderers) left footed shot from a difficult angle on the left is blocked. Assisted by Ivan Cavaleiro with a cross.
Ivan Cavaleiro (Wolverhampton Wanderers) wins a free kick on the left wing.
Foul by James Perch (Queens Park Rangers).
Substitution, Wolverhampton Wanderers. Joe Mason replaces Bright Enobakhare.
Attempt missed. Bright Enobakhare (Wolverhampton Wanderers) right footed shot from outside the box is close, but misses to the right. Assisted by Matt Doherty.
Substitution, Queens Park Rangers. Ariel Borysiuk replaces Sandro.