Match ends, Reading 3, Bristol City 1.
Reading ended a five-match winless run with an impressive victory against top-six rivals Bristol City.
Ovie Ejaria gave the hosts a deserved lead, cutting inside and unleashing a low shot from the edge of the box which took a heavy deflection off Zak Vyner and beat City keeper Daniel Bentley.
Nahki Wells levelled with just City's second attempt on goal, pouncing on a loose ball from a free-kick and tucking the ball under Rafael Cabral.
But their parity was short lived when Michael Olise's superbly weighted through ball sent Yakou Meite clear to slot past Bentley before Lucas Joao sealed the points from close range after another quick counter-attack.
The Royals were full value for the points, which lifted them up to third, and would have won by a greater margin without a string of top saves from Bentley.
They showed almost all of the attacking intent in a cagey first half, with Bentley brilliantly turning away Meite's shot on the swivel and then tipping over a stinging long-range effort from Joao.
Bentley denied Meite again moments before City's run of three clean sheets came to an end, and then superbly clawed Tom Holmes' powerful header away from the top corner to prevent the hosts doubling their lead.
Meite went clear but saw his effort saved before Michael Morrison kicked fresh air when picked out unmarked four yards out as Reading continued to dominate at 1-0. It looked a decisive miss when Wells levelled despite strong claims for offside.
But Meite and Joao struck to consign City to a first defeat in five matches, with Meite also heading wide with the goal gaping after a deflected effort hit the bar.
As well as an impressive attacking display, Royals boss Veljko Paunovic will have been pleased to limit the Robins threat, having conceded 16 goals in their previous six games.
'One of our best performances' - post-match reaction
Reading manager Veljko Paunovic:
"We are all very happy. That is one of our best performances of the year. But in saying that, we must remind ourselves about our consistency. We needed a balanced display on the defensive side and in attack.
"And that happened today. It was a very complete performance.
"Although we conceded a goal, that sometimes happens. You have to clap your opponent because they do well.
"But we didn't tremble. We reacted well and we were serene and ready to go. From the past, we learned what we had to do."
Bristol City head coach Dean Holden:
"We were nowhere near our usual level. It's happened twice this season - the Norwich game at home and this game.
"The players have been magnificent in the season up to now and this was just a game where we weren't at our best.
"We were poor in possession, we gave the ball away cheaply and we offered them to come on to us too easily.
"Having said that, when we got back into it at 1-1, then the mentality has to be that if we can get another opportunity to win, brilliant.
"But if not, let's not lose it. We became a bit too open too easily for that second goal and, ultimately, that's where we lost the game."
- 33Cabral Barbosa
- 11MeiteSubstituted forPontes Estevesat 90+5'minutes
- 7OliseSubstituted forSemedoat 81'minutes
- 14EjariaSubstituted forAlukoat 90+5'minutes
- 18Lucas João
- 2Pontes Esteves
- 23MooreBooked at 65mins
- 25RoweSubstituted forWellsat 56'minutes
- 2HuntSubstituted forEdwardsat 86'minutes
- 4NagySubstituted forBruntat 73'minutes
- 11O'DowdaSubstituted forMassengoat 86'minutes
- 9DiédhiouSubstituted forMartinat 56'minutesBooked at 70mins
- Jeremy Simpson
- Shots on Target
Second Half ends, Reading 3, Bristol City 1.
Substitution, Reading. Tomás Esteves replaces Yakou Meite.
Substitution, Reading. Sone Aluko replaces Ovie Ejaria.
Han-Noah Massengo (Bristol City) wins a free kick in the defensive half.
Foul by Josh Laurent (Reading).
Attempt blocked. Ovie Ejaria (Reading) right footed shot from the left side of the box is blocked. Assisted by Alfa Semedo.
Goal! Reading 3, Bristol City 1. Lucas João (Reading) left footed shot from the centre of the box to the bottom right corner. Assisted by Yakou Meite.
Offside, Reading. Alfa Semedo tries a through ball, but Yakou Meite is caught offside.
Han-Noah Massengo (Bristol City) wins a free kick in the attacking half.
Foul by Josh Laurent (Reading).
Substitution, Bristol City. Han-Noah Massengo replaces Callum O'Dowda.
Substitution, Bristol City. Opi Edwards replaces Jack Hunt.
Attempt blocked. Alfa Semedo (Reading) right footed shot from the centre of the box is blocked.
Attempt blocked. Lucas João (Reading) header from the centre of the box is blocked. Assisted by Ovie Ejaria with a cross.
Corner, Reading. Conceded by Zak Vyner.
Attempt blocked. Lucas João (Reading) right footed shot from outside the box is blocked. Assisted by Ovie Ejaria.
Substitution, Reading. Alfa Semedo replaces Michael Olise.
Attempt missed. Yakou Meite (Reading) header from the centre of the box is close, but misses to the left.
Attempt blocked. Omar Richards (Reading) left footed shot from outside the box is blocked. Assisted by Andy Rinomhota.