Match ends, Bradford City 2, Exeter City 0.
Three players were sent off as Bradford City replaced opponents Exeter City in second place in League Two with victory at Valley Parade.
It was the visitors' third away defeat in a row as they lost skipper Jake Taylor and Tom Parkes to straight red cards, while Bradford's Callum Cooke was dismissed for a second yellow.
Bradford had the first chance when Harry Pritchard crossed from the left and skipper James Vaughan saw his close-range volley blocked.
Exeter had plenty of pressure but ex-Bradford midfielder Nicky Law scuffed their best chance wide when unmarked in the box.
Bradford took the lead against the run of play in the 31st minute as Aramide Oteh jumped for Zeli Ismail's right-wing cross, with the ball eventually adjudged to have gone in off Exeter's Pierce Sweeney.
The home side added a second in first-half stoppage time when Oteh chased a long pass down the middle and appeared to be fouled by Aaron Martin. As Bradford appealed for a penalty, the ball ran free to Vaughan to score from six yards.
Exeter dominated the start of the second half, with Taylor having a goal-bound shot blocked by Ben Richards-Everton in the 52nd minute before Sweeney hit the post a minute later.
Then came two dismissals in the space of three minutes. Taylor was shown the red card for a reckless tackle on Connor Wood and two minutes later Cooke was sent off for a second yellow card after a foul on Law.
Exeter were then reduced to nine men when Tom Parkes was sent off for bringing down substitute Dylan Connolly.
Match report supplied by PA Media.
- 21AkpanSubstituted forAndersonat 87'minutes
- 26CookeBooked at 62mins
- 7PritchardSubstituted forDevineat 73'minutes
- 11IsmailSubstituted forConnollyat 77'minutesBooked at 90mins
- 15ParkesBooked at 82mins
- 25TaylorBooked at 60mins
- 3WoodmanSubstituted forRichardsonat 84'minutes
- 7MartinSubstituted forSeymourat 70'minutes
- Michael Salisbury
- Shots on Target
Second Half ends, Bradford City 2, Exeter City 0.
Dylan Connolly (Bradford City) is shown the yellow card.
Offside, Bradford City. Jermaine Anderson tries a through ball, but Dylan Connolly is caught offside.
Foul by Ryan Bowman (Exeter City).
Jermaine Anderson (Bradford City) wins a free kick in the defensive half.
Attempt missed. Ben Seymour (Exeter City) right footed shot from the centre of the box is too high. Assisted by Randell Williams with a cross.
Ben Seymour (Exeter City) wins a free kick on the left wing.
Foul by Anthony O'Connor (Bradford City).
Foul by Jayden Richardson (Exeter City).
Aramide Oteh (Bradford City) wins a free kick in the defensive half.
Substitution, Bradford City. Jermaine Anderson replaces Hope Akpan.
Dylan Connolly (Bradford City) hits the right post with a right footed shot from outside the box. Assisted by James Vaughan.
Ben Seymour (Exeter City) wins a free kick on the right wing.
Foul by Connor Wood (Bradford City).
Substitution, Exeter City. Jayden Richardson replaces Craig Woodman.
Attempt saved. Connor Wood (Bradford City) left footed shot from outside the box is saved in the bottom right corner.
Tom Parkes (Exeter City) is shown the red card.
Foul by Tom Parkes (Exeter City).
Dylan Connolly (Bradford City) wins a free kick in the attacking half.