Jamie Paterson scored the winner as Bristol City boosted their Sky Bet Championship play-off hopes with a hard-earned 1-0 victory over Reading at Madejski Stadium.
A poor first half from both sides offered only one highlight, when City goalkeeper Daniel Bentley saved superbly from John Swift's fierce drive.
The visitors broke the deadlock in the 62nd minute – and went on to claim their third successive league win – when Paterson finished coolly.
City had won their previous two Championship games – against Wigan and Barnsley – to move to within two points of the play-off places.
Reading had enjoyed a good run of form, losing only once in 12 outings in all competitions.
They drew 1-1 at home with Cardiff in their FA Cup fourth-round tie on Saturday.
Reading could have gone ahead in the opening seconds after slack work in the City midfield.
George Puscas gained possession and drove towards goal but his eventual shot was blocked by the retreating defence.
City quickly recovered and moved forward with pace and intent.
Famara Diedhiou cut in from the right flank but his weak attempt was easily gathered by home goalkeeper Rafael.
Niclas Eliasson then crossed accurately from the same wing only to see Andreas Weimann's glancing header drift harmlessly wide.
Reading countered when Pele played a long pass over the City rearguard for Puscas to run on to.
The Romanian striker seemed favourite to reach the ball first but Bentley swiftly dashed from his goal line to snuff out the danger.
Bentley also had to be alert to keep out a powerful 20-yard effort from Swift.
Most of City's best work came from the tricky Eliasson on the right and, from another of his teasing crosses, Paterson headed wastefully off target.
Reading upped the tempo towards the break but a series of corners came to nothing.
City did not improve significantly at the start of the second period, with the hosts again on top.
Jordan Obita whipped in a cross from the left that Puscas narrowly failed to connect with.
Michael Olise, Reading's 18-year-old midfielder, then tried his luck from distance only to fire high and wide.
Reading should have gone ahead from an Obita corner but, from Michael Morrison's far-post nod-back, Ovie Ejaria somehow scooped over.
It was to prove costly, with City scoring soon after.
Eliasson fed Paterson and, with the Reading defence appealing for offside, Paterson calmly slotted home from close range.
City could have added to their lead late on but defender Nathan Baker missed with a header and Rafael saved from substitute Callum O'Dowda.
Reading, though, almost snatched an equaliser in the dying seconds.
Yakou Meite nodded against a post and Ashley Williams had to clear a goalbound effort from Chris Gunter off the line.