Andy Cook's second-half header was the difference in a game of few chances for either side, which was played in front of Doncaster's biggest attendance this season: 10,655.
Cook broke the deadlock in the 71st minute when he headed home Adam Clayton's corner for his 20th goal of the season.
It was the visitors who came closest to scoring again after the goal and Tom Anderson was forced to clear an effort from Richie Smallwood off the line.
Doncaster are now five points off the top seven.
Scroll down for our player ratings.
1. Match action
Andy Cook heads home for Bradford. Photo: HOWARD ROE
2. Jonathan Mitchell - 7
Made a brilliant save to deny Andy Cook his 20th goal of the season from a second-half header. Hard to attribute blame for the goal at first viewing, made several good saves before that point. Photo: HOWARD ROE
3. James Brown - 6
Forced Harry Lewis into a save at the end of the first half with Doncaster's first - and only - real effort on target. Good forward at every opportunity but lacked that final moment of quality at times. Photo: HOWARD ROE
4. Tommy Rowe - 6
Held his own on the left side of defence but struggled to impact the game going forward as Doncaster created little. Photo: HOWARD ROE