As has been the case in recent games, Reading started the brighter of the two sides, and won a ninth penalty of the season with just twelve minutes gone as Dominic Samuel was fouled in the box by Hordur Magnusson. Not for the first time this campaign, Garath McCleary missed the spot-kick, but not for the first time this campaign, he tapped in the rebound to score his seventh goal of the campaign.
Just six minutes later, it was 2-0 as Roy Beerens finished off a superb passing team move by meeting Chris Gunter's cross with a spectacular volley that will undoubtedly be a contender for goal of the season.
Yet the Royals were perhaps lucky to keep their two goal lead at half-time, as they seemed to take their feet of the gas, with Bobby Reid probably still wondering how he didn't score with Ali Al-Habsi defying the laws of physics to deny the midfielder a goal. Jamie Paterson also had a great chance, whilst Tammy Abraham had the ball in the back of the net but was flagged offside.
In the second half, Reading seemed happy to sit on their 2-0 lead, with Bristol City having the better of the chances but neither side really looked like scoring until the visitors put the ball in the back of the net with three minutes of normal time to go. From the edge of the box, Gary O'Neill fired a thunderous strike goalwards and the ball found its way past Al-Habsi into the bottom corner.
That set up a nervy last few minutes at the Madejski Stadium, with Robins keeper Frank Fielding even going up for a late corner but the Royals managed to cling on to win 2-1 and retain third place in the Championship table.
Reading: Al-Habsi, Obita, Blackett, Moore, McShane, Gunter, Evans, Williams, Beerens (Kelly 90+1'), McCleary (Harriott 74'), Samuel (Meite 69')
Stay tuned to The Tilehurst End for our full report and player ratings!