Match ends, Reading 3, Bristol City 2.
Reading hung on in the closing minutes to beat Bristol City and ease the pressure on manager Paul Clement.
The Royals secured their victory with Leandro Bacuna's second-half strike after the visitors came from behind twice before the interval in an end-to-end game at the Madejski Stadium.
Yakou Meite and a long-range Liam Kelly shot put the hosts in front on two occasions, but their efforts were cancelled out by Marlon Pack and Josh Brownhill for the Robins.
But Mo Barrow's return to the starting line-up proved vital and the midfielder motored down the left wing to provide the winner for Bacuna.
Barrow started for the first time in three matches after the winger was suspended by the club for an internal matter.
Meite gave Reading the lead, the forward pouncing onto a loose ball in the box and firing his left-footed strike beyond goalkeeper Max O'Leary to score his fourth goal in as many games.
City levelled when Jack Hunt split the Reading defence with a perfectly-weighted pass, which skipper Pack guided into the bottom corner.
The hosts regained the lead in first-half stoppage time through a superb strike from Kelly, which sailed into the top corner from 45 yards, only for poor defending from the Royals to allow Josh Brownhill to head in City's second equaliser.
After Bacuna made it 3-2, Lee Johnson's side continued to pile on the pressure in the closing stages but the home team managed to hold on for three points.
The victory gives Clement back-to-back home wins for the first time since he won his first two home games in charge of the Royals late last season.
Reading manager Paul Clement told BBC Radio Berkshire:
"I am pleased with the result. I think it was a big game for everyone involved at the club, me personally, the players and the fans and fortunately we got the result that we so desperately wanted today.
"I think (hard work) was the basis of getting the result, it was the fight and the commitment. It was there right from the start.
"I said to the players leading into the game in training...and also the players before we went out, if you give that effort and commitment the fans will get behind you 100%.
"I think the Reading fans are very honest, I think they have been patient with the team. They have been disappointed with the performances and the results, but they also want the best for their team and today they saw their players fighting for the club."
Bristol City assistant head coach Dean Holden:
"Ultimately we have not defended well enough for two of their goals. When you concede three goals away from home it is always going to be a struggle.
"At 2-2 at half time we felt we had enough to certainly take a point from the game but we felt like we wanted to get on the front foot.
"The third goal is a tough one for us, a tough one to concede.
"We fought right to very end, the lads gave everything."
- 3YiadomBooked at 87mins
- 35RinomhotaBooked at 69minsSubstituted forSwiftat 78'minutes
- 7BacunaBooked at 59mins
- 17BarrowSubstituted forGunterat 87'minutesBooked at 90mins
- 21MeiteSubstituted forMcClearyat 37'minutes
- 9BaldockBooked at 90mins
- 32HuntSubstituted forKellyat 74'minutes
- 12WalshBooked at 59mins
- 19EliassonSubstituted forPatersonat 74'minutes
- 10TaylorSubstituted forWeimannat 63'minutesBooked at 84mins
- James Linington
- Shots on Target
Second Half ends, Reading 3, Bristol City 2.
Chris Gunter (Reading) is shown the yellow card.
Attempt missed. Liam Walsh (Bristol City) right footed shot from outside the box is close, but misses the top right corner from a direct free kick.
Marlon Pack (Bristol City) wins a free kick in the attacking half.
Foul by John O'Shea (Reading).
Attempt saved. Famara Diedhiou (Bristol City) header from the centre of the box is saved in the centre of the goal. Assisted by Adam Webster with a headed pass.
Sam Baldock (Reading) is shown the yellow card for a bad foul.
Lloyd Kelly (Bristol City) wins a free kick on the left wing.
Foul by Sam Baldock (Reading).
Corner, Reading. Conceded by Josh Brownhill.
Attempt saved. Andreas Weimann (Bristol City) right footed shot from the right side of the box is saved in the centre of the goal. Assisted by Famara Diedhiou with a headed pass.
Andy Yiadom (Reading) is shown the yellow card for a bad foul.
Tomas Kalas (Bristol City) wins a free kick in the defensive half.
Foul by Andy Yiadom (Reading).
Substitution, Reading. Chris Gunter replaces Modou Barrow.
Attempt missed. Leandro Bacuna (Reading) right footed shot from outside the box is high and wide to the right.
Andreas Weimann (Bristol City) is shown the yellow card for a bad foul.
Foul by Andreas Weimann (Bristol City).
Sam Baldock (Reading) wins a free kick in the attacking half.