Central striker John Marquis made it seven goals for the season with a brace which kept Doncaster Rovers in the play-off positions and Bradford City in the drop zone at the Keepmoat Stadium.
Rovers' central forward Marquis struck in either half, his second coming shortly after the Bantams had a legitimate penalty appeal rejected.
The visitors showed tenacity, however, and substitute striker George Miller capitalised on an error from goalkeeper Marko Marosi to make it 2-1 in the 81st minute but Rovers held on.
Rovers were unchanged for a third successive match and no wonder after ending Walsall's unbeaten run the previous week with a 4-1 away win, which took them up to fifth.
Bradford, with 13 players unavailable through injury, were also unchanged from the side which lost 2-0 at home to Charlton as head coach David Hopkin made his home bow in charge.
Bradford players came out wearing light blue t-shirts with the No 2 and Darby on the back in tribute to former defender Stephen Darby, 29, who this week was diagnosed with motor neurone disease and has had to retire from the game at Bolton Wanderers.
Darby's name was also sung by the 1,300 Bantams following as they saw Sean Scannell have an early shot blocked for a corner by Andy Butler and Nat Knight-Percival failed to make contact with the inswinging flag kick.
Herbie Kane curled the ball over the bar at the other end from James Coppinger's short corner before Richard O'Donnell made a smart stop from Mallik Wilks's shot on the turn as Rovers cranked up the pressure.
Marquis should have done better with an inch-perfect cross from Coppinger, which O'Donnell managed to touch out for a corner.
Coppinger again had the City defence back-pedalling before he squared to Marquis to curl the ball inside O'Donnell's left-hand post from the edge of the area in the 23rd minute.
Jack Payne dragged a shot wide from Scannell's set-up as City tried to hit back.
It should have been 2-0 after Knight-Percival went in the book for fouling Wilks out wide and Coppinger's deep free-kick was met by a fierce header from Butler which O'Donnell beat back into the central defender's path and watched him head his second chance wide of the open goal in the 32nd minute.
Anthony O'Connor should have made Rovers pay but he headed over from six yards from Payne's corner.
Wilks then back-heeled a near-post corner which O'Donnell pushed away for a second flag kick which the Leeds Unite loanee headed wide of the far post.
Ben Whiteman collected his fifth booking of the season for bringing down Jim O'Brien shortly before the break.
There were no changes made for the start of the second half.
Niall Mason soon went in the book for a foul but Joe Wright escaped conceding a penalty when he appeared to drag down Doyle after David Ball had headed Scannell's cross into the striker's path.
Ball went in the book for pulling down Wilks on halfway but Rovers made it 2-0 in the 53rd minute with a swift counter-attack which saw Coppinger move the ball to Kane, who fed Marquis down the left channel to confidently chip the ball past the onrushing O'Donnell.
Wilks wasted the chance to make it 3-0 when he hit wide after a flowing move involving himself, Marquis and Coppinger.
George Miller and Jordan Gibson replaced Payne and Ball in the 66th minute for City.
Gibson forced Marko Marosi into his first save, catching the 27-yard free-kick with ease in the 71st minute.
The Rovers goalkeeper made a better save, punching away Miller's fierce shot on the turn before Scannell produced a driving run and set up Doyle, only to see the striker hit the foot of the post from 12 yards.
City would not be denied, however, and though Marosi got to a long ball down the left, he failed to control and Miller nudged it past him before knocking into an empty net in the 81st minute.
Rovers immediately brought on Paul Taylor and Alfie May for Coppinger and Wilks.
Striker Kai Bruenker replaced Lewis O'Brien before five minutes of stoppage time was shown on the board. Rovers, however, ran down the clock to emerge victorious.