Match ends, Bristol City 1, Preston North End 2.
Preston left-back Greg Cunningham's late goal gave North End victory over his former club Bristol City.
After an uneventful opening 45 minutes, the visitors went ahead when Robins defender Nathan Baker headed past his own goalkeeper Richard O'Donnell.
Aaron Wilbraham's deflected strike squeezed in moments later to equalise for the home side.
But Cunningham, who left City to join Preston in the summer, headed in off the post to snatch victory.
The result lifted the Lilywhites up to 13th in the Championship table, 13 points above 22nd-placed Bristol City - the team they finished 10 points behind in League One last season as both sides were promoted.
Defeat for Steve Cotterill's team also extended their winless run in the league to six matches, and means they have not recorded victory at Ashton Gate since 3 November.
They spurned a number of opportunities against Preston, with Wilbraham and substitute Bobby Reid both superbly denied by goalkeeper Sam Johnstone, while Jonathan Kodjia's injury-time header hit the post.
But North End, who hit the woodwork through new boy Ben Pearson before Cunningham's 80th-minute winner, were able to hold on for their third league success in a row.
Bristol City manager Steve Cotterill:
"It was a difficult night for us. The players gave all they could give, but a lot of energy and emotion had been expended at West Brom on Saturday.
"We didn't have the normal snap about our game in the first half and Preston enjoyed it because we played to their strengths.
"My lads have left everything on the pitch. They are giving all they have, but we need to add bodies to our squad and that has been the case since May.
"These are tough times and we have to get through them. We deserved to win, but how many times have I said that this season?"
Preston boss Simon Grayson:
"We select a team to make life difficult for the opposition, but we also know we have good players capable of winning games.
"The first half was good from our point of view because our keeper hasn't had a save to make. We didn't pass the ball as well as we can, but we were professional and very solid.
"After we scored we were a bit sloppy for their equaliser, but after that the lads showed great character and we hit the post before grabbing the winner.
"Greg has been taking stick in training for not even looking like scoring. But it was a training ground routine tonight and a sweet moment for him, which he fully deserved."
- 5AylingBooked at 23mins
- 2LittleSubstituted forBurnsat 77'minutes
- 15FreemanSubstituted forReidat 57'minutes
- 18WilbrahamBooked at 63minsSubstituted forAgardat 77'minutes
- 15WoodsSubstituted forVermijlat 89'minutes
- 4PearsonSubstituted forBrowneat 82'minutes
- 13DoyleSubstituted forRobinsonat 72'minutes
- James Linington
- Shots on Target
Second Half ends, Bristol City 1, Preston North End 2.
Attempt saved. Jonathan Kodjia (Bristol City) right footed shot from the right side of the box is saved in the bottom left corner.
Jonathan Kodjia (Bristol City) hits the left post with a header from the centre of the box. Assisted by Bobby Reid with a cross following a corner.
Corner, Bristol City. Conceded by Marnick Vermijl.
Attempt blocked. Joe Bryan (Bristol City) left footed shot from outside the box is blocked. Assisted by Korey Smith.
Hand ball by Callum Robinson (Preston North End).
Wes Burns (Bristol City) wins a free kick on the right wing.
Foul by Bailey Wright (Preston North End).
Luke Ayling (Bristol City) wins a free kick on the right wing.
Foul by Paul Gallagher (Preston North End).
Attempt blocked. Nathan Baker (Bristol City) header from the centre of the box is blocked. Assisted by Bobby Reid with a cross.
Corner, Bristol City. Conceded by Paul Gallagher.
Substitution, Preston North End. Marnick Vermijl replaces Calum Woods because of an injury.
Foul by Nathan Baker (Bristol City).
Callum Robinson (Preston North End) wins a free kick in the defensive half.
Luke Ayling (Bristol City) wins a free kick in the defensive half.
Foul by Joe Garner (Preston North End).
Substitution, Preston North End. Alan Browne replaces Ben Pearson because of an injury.
Attempt missed. Luke Ayling (Bristol City) header from the left side of the box is close, but misses to the left. Assisted by Bobby Reid with a cross following a corner.