Match ends, Crawley Town 1, Bristol City 2.
Bristol City maintained their 10-point gap at the top of League One after a late win at struggling Crawley.
The hosts started brightly but leading scorer Izale McLeod fired wide when well placed before Aden Flint headed the visitors in front.
On-loan Anthony Wordsworth fired home the equaliser into the roof of the net on the hour mark.
Late on, Crawley's Dean Morgan conceded a corner and, from the set-piece, Luke Ayling rose highest to head the winner.
The Robins have now won their last four in a row while Crawley, who are two-points from safety, are without a win in three.
Crawley manager Dean Saunders told BBC Sussex:
"I'm gutted we've come away with nothing, again. That's two good performances, and that was probably better than Bradford. We've switched off at two set plays, the second is a move we went over on the training ground, and I won't sleep tonight over that.
"We've come a long way, and that was a performance against a team that was 10 points clear. We've matched them toe-to-toe and were probably the better team.
"The players will be gutted because you have jobs on the football pitch that you have to do and we've conceded at two set plays. They were two rubbish goals to concede.
"You can say what you like about performances but we have not got enough points."
Bristol City manager Steve Cotterill told BBC Radio Bristol:
"It's a tough pitch for both teams to play on today
"I thought that at times they tried to play today, and at times we did, but when you're coming to a team that's down at the bottom they're going to be fighting for their lives.
"The pitch, you only have to look at it, pitches at this time of year with the weather that we get in our country, I think groundsmen deserve a medal for how they get these pitches playable really.
"Our players were good, but I thought Luke Ayling was our best player and it was fitting he got the winner."
- 26WordsworthBooked at 36mins
- 14YoungBooked at 83minsSubstituted forEdwardsat 89'minutes
- 28PogbaSubstituted forMorganat 69'minutes
- 7SmithBooked at 45mins
- 23BryanSubstituted forCunninghamat 90+3'minutes
- 15FreemanSubstituted forSavilleat 90+2'minutes
- 19AgardSubstituted forEmmanuel-Thomasat 81'minutes
- Andy D'Urso
- Shots on Target
Second Half ends, Crawley Town 1, Bristol City 2.
Attempt saved. Richard Wood (Crawley Town) header from the centre of the box is saved in the top centre of the goal.
Dean Morgan (Crawley Town) wins a free kick in the attacking half.
Foul by Aaron Wilbraham (Bristol City).
Attempt missed. Dean Morgan (Crawley Town) header from very close range is just a bit too high.
Corner, Crawley Town. Conceded by Greg Cunningham.
Substitution, Bristol City. Greg Cunningham replaces Joe Bryan.
Substitution, Bristol City. George Saville replaces Luke Freeman.
Corner, Bristol City. Conceded by Anthony Wordsworth.
Substitution, Crawley Town. Gwion Edwards replaces Lewis Young.
Goal! Crawley Town 1, Bristol City 2. Luke Ayling (Bristol City) header from the right side of the six yard box to the top left corner. Assisted by Luke Freeman with a cross.
Corner, Bristol City. Conceded by Dean Morgan.
Lewis Young (Crawley Town) is shown the yellow card.
Foul by Lewis Young (Crawley Town).
Joe Bryan (Bristol City) wins a free kick in the defensive half.
Substitution, Bristol City. Jay Emmanuel-Thomas replaces Kieran Agard.
Foul by Dean Morgan (Crawley Town).
Marlon Pack (Bristol City) wins a free kick on the right wing.
Attempt missed. Aaron Wilbraham (Bristol City) header from the centre of the box is just a bit too high.