The home side dominated the first half and went in at the break wondering how they had not gone in front.
Ollie Watkins hit the crossbar with a spectacular overhead kick, while Liam McAlinden spurned the chance to head Exeter in front when he missed a header from Robbie Simpson's header back across goal.
Jason Banton was Crawley's most dangerous player and he curled a shot wide from 20 yards at the beginning of the second half.
Exeter's best chance fell to Watkins after 68 minutes when a partially-cleared cross fell at his feet, but he rushed his finish and screwed his shot high over the bar.
Exeter were beginning to run out of ideas and Crawley hit them on the break with the only goal of the game with six minutes remaining.
Poor defending allowed Josh Yorwerth to walk through the Exeter defence and plant a low shot into the bottom corner from 15 yards.
Lloyd James curled a free-kick over the bar in stoppage time, but that was Exeter's only real effort at goal after Yorwerth's strike.
Report supplied by the Press Association.
Match ends, Exeter City 0, Crawley Town 1.
Second Half ends, Exeter City 0, Crawley Town 1.
Jordan Moore-Taylor (Exeter City) wins a free kick on the right wing.
Foul by Enzio Boldewijn (Crawley Town).
Attempt missed. James Collins (Crawley Town) right footed shot from outside the box is close, but misses to the left.
Attempt missed. Lloyd James (Exeter City) right footed shot from outside the box is too high from a direct free kick.
Substitution, Exeter City. Tom McCready replaces Jake Taylor because of an injury.
Ryan Harley (Exeter City) wins a free kick in the attacking half.
Foul by Josh Yorwerth (Crawley Town).
Matt Oakley (Exeter City) wins a free kick in the defensive half.
Foul by Matt Harrold (Crawley Town).
Substitution, Crawley Town. Bobson Bawling replaces Jason Banton.
Goal!  Exeter City 0, Crawley Town 1. Josh Yorwerth (Crawley Town) right footed shot from the centre of the box to the bottom right corner. Assisted by Matt Harrold.
Corner,  Exeter City. Conceded by Lewis Young.
Substitution, Crawley Town. Josh Yorwerth replaces Josh Payne.
Lloyd James (Exeter City) is shown the yellow card for a bad foul.
Josh Payne (Crawley Town) wins a free kick in the attacking half.
Foul by Lloyd James (Exeter City).
Attempt blocked. Ryan Harley (Exeter City) right footed shot from outside the box is blocked.
Attempt saved. Ollie Watkins (Exeter City) right footed shot from outside the box is saved in the bottom right corner.
Attempt missed. Robbie Simpson (Exeter City) header from the centre of the box is close, but misses to the right.
Substitution, Crawley Town. Matt Harrold replaces Billy Clifford.
Robbie Simpson (Exeter City) is shown the yellow card.
Foul by Jake Taylor (Exeter City).
Andre Blackman (Crawley Town) wins a free kick on the right wing.
Substitution, Exeter City. Connor Riley-Lowe replaces Liam McAlinden.
Attempt missed. Robbie Simpson (Exeter City) header from the centre of the box is close, but misses to the left.
Jake Taylor (Exeter City) wins a free kick in the defensive half.
Foul by Andre Blackman (Crawley Town).
Pierce Sweeney (Exeter City) wins a free kick in the attacking half.
Foul by Jason Banton (Crawley Town).
Ollie Watkins (Exeter City) wins a free kick on the left wing.
Foul by Lewis Young (Crawley Town).
James Collins (Crawley Town) is shown the yellow card for a bad foul.
Ethan Ampadu (Exeter City) wins a free kick in the defensive half.
Foul by James Collins (Crawley Town).
Second Half begins Exeter City 0, Crawley Town 0.
First Half ends, Exeter City 0, Crawley Town 0.
Attempt missed. Josh Payne (Crawley Town) right footed shot from the centre of the box misses to the right following a corner.
Corner,  Crawley Town. Conceded by Ethan Ampadu.
Exeter City are still searching for their first point of the season as Crawley Town completed the ultimate smash-and-grab at St James' Park.