Match ends, Bristol City 0, Preston North End 1.
Callum Robinson's eighth goal of the season, on his 150th appearance for the club, was enough to give visitors Preston three points at Bristol City and keep North End above the Championship relegation spots.
Robinson's finish from Daniel Johnson's pass gave the Lilywhites their first away win in the league this season, having previously only picked up three points and conceded 16 goals on the road.
City, meanwhile, have lost three games in a row for the first time since January.
Preston were the better side throughout and the hosts left the pitch to some boos from disgruntled fans as their dip in form continued.
City's Famara Diedhiou put an early headed chance over the bar and, at the other end, Sean Maguire nodded straight into the arms of home goalkeeper Niki Maenpaa.
Two errors by Adam Webster almost cost City dearly, firstly when he lost possession and Maguire's shot was saved by Maenpaa, who then had to react smartly to smother an effort from Tom Barkhuizen following an under-hit backpass.
Declan Rudd, back in the Preston goal in place of the suspended Chris Maxwell, kept his first clean sheet since the opening day of the season.
Bristol City head coach Lee Johnson:
"Individually we didn't get our game going and the frustrating thing is we didn't show our identity or have a spark. It hurts but we have to be careful not to be too down because we're still 13th and can stick a run together, although I understand that run seems a long way after a performance like that. Credit to Preston, they executed their game plan.
"We've got quality in the squad and it's my job to bring it out. I can only apologise. I'm upset because I want the fans to see a performance full of energy, brightness and gumption and they didn't get that today."
Preston North End manager Alex Neil:
"It was a pleasing performance. Probably the perfect away performance. That's us unbeaten in seven games and this is a difficult place to come. Defensively we were solid and we carried a threat going forward. I think everyone did their jobs today.
"The win was the most important thing for us and I think we've started to pick up a bit of momentum now and hopefully we can build on that."
Line-ups
Bristol City
Formation 5-3-2
- 33Mäenpää
- 32HuntBooked at 88mins
- 22Kalas
- 6BakerSubstituted forEliassonat 55'minutes
- 4Webster
- 3Dasilva
- 8Brownhill
- 21Pack
- 12WalshSubstituted forPatersonat 55'minutes
- 9DiedhiouSubstituted forTaylorat 64'minutes
- 14Weimann
Substitutes
- 10Taylor
- 11O'Dowda
- 17Kelly
- 19Eliasson
- 20Paterson
- 24O'Leary
- 40Eisa
Preston
Formation 4-3-3
- 1Rudd
- 5Clarke
- 23Huntington
- 6Davies
- 3EarlBooked at 79mins
- 12GallagherSubstituted forBrowneat 74'minutes
- 11JohnsonBooked at 75mins
- 4Pearson
- 29Barkhuizen
- 24MaguireSubstituted forNmechaat 84'minutes
- 7Robinson
Substitutes
- 2Fisher
- 8Browne
- 9Moult
- 13Crowe
- 16Hughes
- 21Barker
- 45Nmecha
- Referee:
- Geoff Eltringham
- Attendance:
- 19,797
Match Stats
- Possession
- Home56%
- Away44%
- Shots
- Home5
- Away10
- Shots on Target
- Home1
- Away3
- Corners
- Home3
- Away2
- Fouls
- Home15
- Away15
Live Text
Post update
Full Time
Second Half ends, Bristol City 0, Preston North End 1.
Post update
Foul by Marlon Pack (Bristol City).
Post update
Lukas Nmecha (Preston North End) wins a free kick in the defensive half.
Post update
Attempt missed. Marlon Pack (Bristol City) header from the centre of the box misses to the right. Assisted by Niclas Eliasson with a cross following a corner.
Post update
Corner, Bristol City. Conceded by Joshua Earl.
Post update
Tomas Kalas (Bristol City) wins a free kick in the defensive half.
Post update
Foul by Lukas Nmecha (Preston North End).
Post update
Matty Taylor (Bristol City) wins a free kick in the defensive half.
Post update
Foul by Alan Browne (Preston North End).
Post update
Foul by Jamie Paterson (Bristol City).
Post update
Alan Browne (Preston North End) wins a free kick in the defensive half.
Post update
Delay over. They are ready to continue.
Booking
Jack Hunt (Bristol City) is shown the yellow card.
Post update
Delay in match Ben Pearson (Preston North End) because of an injury.
Post update
Foul by Niclas Eliasson (Bristol City).
Post update
Alan Browne (Preston North End) wins a free kick in the attacking half.
Post update
Delay over. They are ready to continue.
Post update
Delay in match Tom Barkhuizen (Preston North End) because of an injury.
Post update
Foul by Marlon Pack (Bristol City).