Jay Emmanuel-Thomas scored one goal and made another as Bristol City won their first home game since March.
Emmanuel-Thomas finally broke the deadlock in the 80th minute when he scored a left-footed shot.
Karleigh Osborne then won a tackle on the edge of his own penalty area and found Emmanuel-Thomas who set up Joe Bryan for his first City league goal.
City's victory takes them out of the relegation zone as Crawley suffered their fourth defeat in a row.
VIEWS FROM THE DRESSING ROOM
Bristol City head coach Sean O'Driscoll told BBC Radio Bristol:
"It was a difficult 90 minutes and Crawley showed what a good team they can be.
"But we dug in and that was the key to it. When we got fluid we banked up and made it difficult for them.
"It was one of those wins where if we'd been in the top half of the table, people would say it was a professional performance.
"Because of where we are it's a scrappy 2-0. But they did all the right things."
Crawley Town manager Richie Barker told BBC Surrey:
"I thought it had 0-0 written all over it, but yet again individual errors. I said last week all my players have a flaw, which is why they play for Crawley Town, and I think that was reiterated tonight.
"It is frustrating, but if I was sat there thinking I got the tactics wrong, I would look closer to myself. Unfortunately, you put your faith in other people when you throw them out there.
"All I can do is work as hard as I can do, and try and do the right things. I think we did the right things for 80 minutes, unfortunately the game lasts for 90 minutes.
"The players are letting themselves down. Whether they are letting me down is irrelevant. We are what we are, and we've got what we've got."
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.