Yann Kermorgant deflected Liam Moore's shot past Carl Ikeme to put the hosts ahead, but just two minutes later Ben Marshall touched in Nouha Dicko's fine cross to level.
Paul McShane met John Swift's free-kick with an inch-perfect header to win it.
Wolves defender Mike Williamson was then sent off late on after his second booking for a block on Kermorgant.
Wolves, who are on their worst losing streak since April 2012, have now slipped to just one place and a point above the relegation zone.
They had done well to stifle Reading's passing game in a tame first half which brought no efforts on goal for the opening 40 minutes.
Wolves had the best chance moments before half-time when Ali Al Habsi clawed away a glancing header from Romain Saiss.
After the two early goals in the second half, Paul Lambert's side then carved out chances to go ahead, with Al Habsi at full-stretch to keep out George Saville's long-range strike and Dicko hitting the side-netting after being put through.
But McShane's late strike gave the Royals a 12th win of the season at the Madejski Stadium and they remain fifth, just a point behind fourth-placed Leeds United.
Reading manager Jaap Stam:
"We got the three points. I'm not happy with how we played but you can't have it all. We still need to learn and we still need to improve a lot.
"You've done well the whole season, you've been third in the league for a long time and it would be a shame not to end up in the top six.
"People around the club were talking about automatic promotion. But that's not going to happen. Even for us to end up in the top six, it's going to be very hard."
Wolverhampton Wanderers boss Paul Lambert:
Media playback is not supported on this device
"If we keep playing the way we are, the law of averages tells you that it'll go for you. I feel a bit hard done by.
"That's the way things tend to go when you're down there. But, when you come through it, you'll be a stronger team for it.
"I've never known the players' confidence to drop. They're a really good group of guys, good people, good characters. We'll keep our heads up, keep our spirits up."
Match ends, Reading 2, Wolverhampton Wanderers 1.
Second Half ends, Reading 2, Wolverhampton Wanderers 1.
Attempt missed. Andreas Weimann (Wolverhampton Wanderers) header from very close range misses to the left. Assisted by Ben Marshall with a cross.
Attempt missed. Lewis Grabban (Reading) right footed shot from outside the box is too high. Assisted by John Swift.
Substitution, Wolverhampton Wanderers. Matt Doherty replaces Conor Coady.
Attempt missed. Ben Marshall (Wolverhampton Wanderers) left footed shot from the left side of the box misses to the left following a set piece situation.
Danny Williams (Reading) is shown the yellow card.
Yann Kermorgant (Reading) is shown the yellow card for a bad foul.
Foul by Yann Kermorgant (Reading).
Hélder Costa (Wolverhampton Wanderers) wins a free kick in the attacking half.
Second yellow card to Mike Williamson (Wolverhampton Wanderers) for a bad foul.
Yann Kermorgant (Reading) wins a free kick in the defensive half.
Foul by Mike Williamson (Wolverhampton Wanderers).
Substitution, Wolverhampton Wanderers. Jón Dadi Bödvarsson replaces George Saville.
Corner,  Reading. Conceded by George Saville.
Goal!  Reading 2, Wolverhampton Wanderers 1. Paul McShane (Reading) header from the centre of the box to the top right corner. Assisted by John Swift with a cross following a set piece situation.
Yakou Meite (Reading) wins a free kick on the right wing.
Foul by George Saville (Wolverhampton Wanderers).
Attempt missed. George Evans (Reading) right footed shot from outside the box is high and wide to the right. Assisted by Lewis Grabban.
Foul by Chris Gunter (Reading).
Hélder Costa (Wolverhampton Wanderers) wins a free kick on the left wing.
Attempt blocked. Ben Marshall (Wolverhampton Wanderers) right footed shot from outside the box is blocked. Assisted by Andreas Weimann.
Attempt saved. George Saville (Wolverhampton Wanderers) left footed shot from outside the box is saved in the centre of the goal. Assisted by Conor Coady.
Substitution, Wolverhampton Wanderers. Andreas Weimann replaces Nouha Dicko.
Attempt missed. Mike Williamson (Wolverhampton Wanderers) left footed shot from outside the box is high and wide to the left. Assisted by Kortney Hause following a corner.
Corner,  Wolverhampton Wanderers. Conceded by Liam Moore.
Substitution, Reading. George Evans replaces Joey van den Berg.
Foul by Joey van den Berg (Reading).
David Edwards (Wolverhampton Wanderers) wins a free kick in the attacking half.
Foul by Yakou Meite (Reading).
George Saville (Wolverhampton Wanderers) wins a free kick in the attacking half.
Nouha Dicko (Wolverhampton Wanderers) is shown the yellow card for a bad foul.
Joey van den Berg (Reading) wins a free kick in the attacking half.
Foul by Nouha Dicko (Wolverhampton Wanderers).
Attempt missed. Nouha Dicko (Wolverhampton Wanderers) right footed shot from a difficult angle on the right is close, but misses to the right. Assisted by Hélder Costa.
Substitution, Reading. Yakou Meite replaces Adrian Popa.
Substitution, Reading. Lewis Grabban replaces Roy Beerens.
Corner,  Wolverhampton Wanderers. Conceded by Paul McShane.
Adrian Popa (Reading) wins a free kick on the right wing.
Foul by George Saville (Wolverhampton Wanderers).
Reading strengthened their Championship play-off hopes as they inflicted Wolves' fifth successive league defeat.