Match ends, Shrewsbury Town 2, Bristol City 3.
Joe Bryan grabbed a vital winner for Bristol City against fellow strugglers Shrewsbury at the Greenhous Meadow.
Jay Emmanuel-Thomas opened the scoring for the visitors with a powerful strike from distance, but Tamika Mkandawire equalised with a brilliant 30-yarder.
Centre-back Mkandawire then turned Sam Baldock's low cross into his own net, only for Paul Parry's well-placed header to level the scores once more.
But Bryan nodded past goalkeeper Joe Anyon to win the match for City.
The Robins, who secured back-to-back league victories for only the second time this season, moved up to 17th, three points clear of 21st-placed Stevenage.
Shrewsbury, meanwhile, now lie 23rd, having seen their three-match unbeaten run come to an end.
Shrewsbury Town manager Michael Jackson told BBC Radio Shropshire:
"It is disappointing, especially when the goals you give away are poor.
"I thought there was only one way the game was going to go when we got back in it at 2-2.
"It has been ups and downs all season, but we still have plenty of games left - they are coming quick and we have to be ready.
"I think we deserved at least a point today. We are lacking consistency, and once again it is down to fine margins and detail. That's the difference when it comes to games like this."
Bristol City manager Steve Cotterill told BBC Radio Bristol:
"At the end of the day there were some balls being put into our box, I think they were quite a direct team, and you have to be able to deal with it.
"When you do face a team like that as long as you do your job properly there shouldn't be a problem, it's normally when you've got clever players around you.
"I'm not saying they don't have clever players but it ended up being a direct game and as we see in the second half the wind picked up and that's been the bane of my life since I've been the manager of Bristol City.
"I was talking to the boys afterwards and they had said it was quite difficult to get out in the second half. You have to be very good with the ball, which we were at times - but not good enough at times."
- 3JacobsonSubstituted forGrandisonat 89'minutes
- 8McAllisterSubstituted forMendez-Laingat 83'minutes
- 16MkandawireBooked at 60mins
- 20StoreySubstituted forAtajicat 87'minutes
- 5FlintSubstituted forOsborneat 70'minutes
- 19PearsonSubstituted forPackat 66'minutes
- 15BryanSubstituted forCunninghamat 79'minutes
- Graham Horwood
- Shots on Target
Second Half ends, Shrewsbury Town 2, Bristol City 3.
Corner, Shrewsbury Town. Conceded by Simon Gillett.
Attempt missed. Connor Goldson (Shrewsbury Town) header from the centre of the box is too high.
Corner, Shrewsbury Town. Conceded by Frank Fielding.
Attempt saved. Asa Hall (Shrewsbury Town) header from the centre of the box is saved in the top centre of the goal.
Bahrudin Atajic (Shrewsbury Town) wins a free kick in the defensive half.
Foul by Adam El-Abd (Bristol City).
Substitution, Shrewsbury Town. Jermaine Grandison replaces Joe Jacobson.
(Shrewsbury Town) wins a free kick in the attacking half.
Foul by Karleigh Osborne (Bristol City).
Corner, Bristol City. Conceded by Joe Jacobson.
Attempt blocked. Sam Baldock (Bristol City) right footed shot from a difficult angle on the right is blocked.
Substitution, Shrewsbury Town. Bahrudin Atajic replaces Miles Storey.
Foul by Jon Taylor (Shrewsbury Town).
Greg Cunningham (Bristol City) wins a free kick in the defensive half.
Attempt missed. Connor Goldson (Shrewsbury Town) header from the centre of the box is close, but misses to the left.
Substitution, Shrewsbury Town. Nathaniel Mendez-Laing replaces David McAllister.
Sam Foley (Shrewsbury Town) wins a free kick in the defensive half.
Foul by Adam El-Abd (Bristol City).