Reading have now failed to create a goal of their own in the last five games with an own goal from Wolves defender Neill Collins the only success.
Their defence had been sound enough, with three successive clean sheets going into this game, but against Bristol City the Royals failed in both attack and defence.
A goal in each half was enough to see the Robins safely home and they thoroughly deserved their win
Reading had their chances, but the closest they came to scoring was in the 13th minute when full-back Chris Armstrong sent a shot thumping against Adriano Basso's left-hand post.
City's Dele Adebola, back in the side after an ankle injury, was the main threat to Reading's defence and in one clash Michael Duberry was flattened and needed treatment before resuming.
Bristol's opening goal came from a 25th minute free-kick after Armstrong was penalised for a foul. Michael McIndoe swung the ball in from the right and Adebola outjumped Duberry to head home at the far post.
City were full of confidence now and it took a last-gasp tackle by Liam Rosenior to stop Ivan Sproule from adding a second.
Both sides claimed a penalty, but were turned down by referee Andy Penn. The first came when Kevin Doyle took a tumble following a challenge by Jamie McAllister, then the referee ignored Louis Carey's request for a penalty after he appeared to be hauled down Leroy Lita.
Mr Penn was angering supporters with his decisions and Reading skipper James Harper was shown the yellow card after one protest.
City moved further ahead three minutes into the second half with a goal from a goal-line scramble. Half a dozen players hacked at the ball before it crossed the line, with Cole Skuse getting the last touch.
Reading didn't lack in spirit and they kept battling away and Lita twice sent efforts fizzing over the crossbar
Home manager Steve Coppell rang the changes with his substitutions and his side battered away at City's goal towards the end. However, it was too late to make any difference.