A commanding away performance earned the Royals a fine away win at Ashton Gate, scoring twice at the end of the first half and the margin of victory could very easily have been much larger.
Both teams began tentatively - Esteves looking to thread a ball into Joao but not finding feet, then the hosts finding some space down the right only for the cross to be far too deep for anyone in the middle.
Olise delivered a cross from Reading's right, seven minutes in, but although Joao wrestled with his marker at the far post in trying to get his head to it, the ball curled wide and behind for a goal kick.
The Royals threatened again when a low cross from Esteves was nearly met by Joao in the middle. The ball was recycled by Ejaria and then Olise arced a delicate ball over the top to find Semedo arriving into the City box. He chested it down and hooked the ball over the onrishing Bentley from a narrow angle, but a Bristol head got to it first to clear their lines.
Some lovely skill from Olise on the right wing led to a counter attack that ended with a right-footed drive from Richards that cannoned into a City head and span wide. The resultant corner saw Esteves take aim when a half-cleared Olise delivery fell to him ont the edge of the box - again a Robins body got in the way before Bentley was forced into a save.
The game became a little scruffy with neither team able to earn meaningful periods of possession nor create in front of goal. Both Vyner and Olise delivered wayward crosses from promising positions as the game remained goalless.
Reading came so close to making it 1-0 just after the half hour - Esteves and Yiadom combined down the right and the latter crossed low into the box where Ejaria arrived onto it. His sidefooted shot deflected off a Bristol leg and bobbled just wide of the bottom right corner.
And it took Hunt to hack the ball off his goalline moments later when Ejaria did brilliantly to jink his way into the box along the byline and pull the ball back for Richards, who drilled a shot at goal only to see it cleared by the City defender.
The goal was coming...and then it came. Four minutes before the break, Yiadom won a free kick on the right. Olise delivered a beautiful inswinging set piece and Joao ghosted into it, brought it down and stabbed it home from seven yards out.
And before half-time came, it was 2-0! And what a goal by captain Michael Morrison. The centre-half stepped in to win the ball in midfield and he drove forward. Laying the ball into the feet of Joao he continued his run into the area and Joao's clever flick saw the ball find Morro bursting into the box. Two men still to beat, he bundled his way past Vyner and then toe-poked the ball goalwards, off a sliding Mariappa, and over a helpless Bentley.
The away bench certainly enjoyed that goal and after a few defensive headers at the other end, the referee sounded his whistle and Reading went into the interval two goals to the good. A deserved lead.
Half-time: Bristol City 0-2 Reading
Dean Holden's men came out with more intent from the very off - Famara Diedhiou driving a low effort on target and winning a corner. That corner was delivered deep and two red shirts rose to aim a header at Rafael's goal - the Brazilian calmly plucking it out of the air on his goalline.
Reading were looking to capitalise on gaps at the back as City pressed higher, and Joao latched onto a loose ball 25 yards out. He lost his footing a little as he looked for an angle to shoot so laid it off for Esteves who swept a first time shot across the face of goal and wide.
Olise took aim from 25 yards out but his speculative effort sailed harmlessly wide. Then, Richards counter attacked down the left and fizzed a low centre for Semedo to slide onto - but he couldn't get enough on the ball to direct it at goal.
Olise whipped in a free kick from the right which Ejaria so nearly got a foot to arriving at the back post, but Reading had to stay alert to the threat of a goal that might open up the game again and Taylor Moore thundered a powerful header wide from a corner on the hour.
The hosts made three changes with 25 minutes remaining, but Esteves nearly made it 3-0 when Rinomhota won the ball in midfield, Olise darted forward and teed up Esteves for a low drive that deflected off a sliding City defender and skidded just wide.
Bentley needed to shovel a Tom McIntyre volley around the base of his left post to prevent a Reading third - the centre-half connecting with an Olise corner.
Diedhiou got a snapshot away from the edge of the area but a sliding challenge from Morrison did enough to deflect it off target and over the crossbar.
From the resultant corner, Reading broke when McIntrye thumped a clearance into Ejaria in acres of space and with the whole City half to run into. He couldn't bring a bouncign ball down quick enough to capitalise on that space though and City hurried back in their numbers to crowd him out.
Reading were seeing the game out comfortably and as five minutes of additional minutes were signalled, Veljko Paunovic prepared his fourth substitute to wind the clock down as Dejan Tetek replaced Olise.
And the final whistle followed soon after to signal victory for the Royals on the road.
Full-time: Bristol City 0-2 Reading
Yellow: Hunt, Lansbury, Moore, Bakinson.
Reading: Rafael, Yiadom, Richards, Morrison (c), McIntyre, Esteves (Holmes 76), Rinomhota, Semedo, Ejaria (Puscas 86), Olise (Tetek 90), Joao (Gibson 86).
Unused subs: Southwood, Moore, Onen, Aluko, Baldock.
Yellow: Richards, Ejaria, Olise.
Goals: Joao 42, Morrison 45
This match report was brought to you by WHATJOBS. Learn more at www.WHATJOBS.com