Veteran striker Jamie Cureton struck his 13th goal of the season to give Exeter victory over Bradford.
The 37-year-old swept in Matt Oakley's nod-down to score the only goal of the game before half-time.
Bradford came back strongly after the interval, but Alan Connell's shot was cleared off the line and Garry Thompson's strike went wide.
The Bantams also wanted a penalty when Nahki Wells went down in the area, but the referee waved appeals away.
VIEW FROM THE DRESSING ROOM
Exeter City manager Paul Tisdale told BBC Radio Devon:
"I happen to think one-nil is exactly what we needed, it just shows to the players they can grit out 50 minutes of very threatening football.
"That's us at our best away from home.
"I went defensive but I'm not ashamed of that. We stuck it out and I think our physio is going to have a tough couple of days, we've got four or five players who are bruised and battered.
"We stuck it out, we got to the ball, it wasn't pretty but we did what we had to."
Bradford City 12 Duke 16 McHugh 22 Egan 23 McArdle 25 Naylor (Thompson - 76' ) 14 Atkinson 15 Forsyth (Connell - 46' ) 18 Jones Booked 24 Doyle 09 Hanson 21 Wells Substitutes 01 McLaughlin 04 Ravenhill 11 Thompson 30 Brown 31 Bass 17 Connell 19 Baker Exeter City 01 Krysiak 02 Tully 03 Woodman 04 Bennett (Doherty - 46' Booked ) 05 Baldwin 06 Coles 07 Sercombe 08 Oakley Booked 10 Gow (Amankwaah - 84' ) 12 Cureton (Bauza - 90' ) 19 O'Flynn Substitutes 24 Evans 16 Amankwaah 37 Moore-Taylor 14 Doherty 22 Keohane 23 Dawson 21 Bauza