Dobbin had the first opportunity for the in-form visitors – who have lost just one of their past 10 games – but his strike from range went just wide of the top corner.

Minutes later, though, Dobbin did break the deadlock, fed by midfielder Jordan Thompson – who pounced on a loose kick out by O’Leary – before finishing calmly one-on-one with the City keeper.

Robins defender Rob Atkinson strode forward as the hosts sought a response but he fired his shot wide of the Preston left-hand upright.

O’Leary then picked out Anis Mehmeti, whose cross to the back post looked destined to yield a Scott Twine equaliser but Preston defender Jordan Storey made a vital interception to head the ball away from danger.

Moments after half-time, Preston’s Devine hit a warning shot from the left side of the Bristol City penalty area but was narrowly off target.

The hosts, who had thrashed Portsmouth 5-0 just three days earlier, made a triple change in a bid to turn the tide and former Ipswich Town captain Sam Morsy, on his Bristol City debut, shot just wide from outside the box moments after coming on.

But with 20 minutes left, Devine wrapped up the points for Preston with a fine finish across the face of O’Leary’s goal.

In the latter stages, City substitute Sam Bell went close to halving the hosts’ deficit but his shot was well kept out by Preston goalkeeper Daniel Iversen, who preserved a third clean sheet in four games.