Match ends, Bradford City 4, Walsall 0.
Bradford City strengthened their League One play-off position as James Hanson's second-half hat-trick helped dent Walsall's hopes of automatic promotion.
Midfielder Filipe Morais gave the Bantams the lead on 54 minutes.
Hanson then netted three times in 16 minutes to keep Bradford in fifth, five points clear of seventh-placed Gillingham with two matches remaining.
Walsall have a game in hand but trail Burton by six points, having slipped to fourth as Millwall won at Bury.
Walsall interim boss Jon Whitney told BBC WM 95.6:
"It was not good enough. I have asked the players to have a look at themselves.
"I want them to go home and ask themselves 'Did you really do enough to challenge Bradford City? Did you do enough to want to get promoted to the Championship? Were you willing to put your head on the line?
"Sometimes that is what you have to do in football. It's not always about playing pretty football.
"We have to match them physically and we didn't do it second half. We capitulated after the first goal."
- 16BurkeBooked at 31minsSubstituted forClarkeat 83'minutes
- 20MoraisSubstituted forProctorat 78'minutesBooked at 90mins
- 9HansonSubstituted forClarkeat 87'minutes
- 6DowningBooked at 90mins
- 3TaylorBooked at 53mins
- 8MantomSubstituted forMorrisat 70'minutes
- 14HenrySubstituted forBradshawat 59'minutes
- 31Hiwula-MayifuilaSubstituted forCookat 82'minutes
- Darren Drysdale
- Shots on Target
Second Half ends, Bradford City 4, Walsall 0.
Jamie Proctor (Bradford City) is shown the yellow card.
Attempt blocked. Lee Evans (Bradford City) right footed shot from more than 35 yards is blocked.
Paul Downing (Walsall) is shown the yellow card for a bad foul.
Kyel Reid (Bradford City) wins a free kick in the defensive half.
Foul by Paul Downing (Walsall).
Attempt saved. Tom Bradshaw (Walsall) left footed shot from the centre of the box is saved in the centre of the goal.
Substitution, Bradford City. Billy Clarke replaces James Hanson.
Jordan Cook (Walsall) wins a free kick in the defensive half.
Foul by Kyel Reid (Bradford City).
James Hanson (Bradford City) wins a free kick in the attacking half.
Foul by Adam Chambers (Walsall).
Substitution, Bradford City. Nathan Clarke replaces Reece Burke.
Substitution, Walsall. Jordan Cook replaces Jordy Hiwula-Mayifuila.
Foul by Jamie Proctor (Bradford City).
James O'Connor (Walsall) wins a free kick on the right wing.
Foul by Josh Cullen (Bradford City).
Adam Chambers (Walsall) wins a free kick in the attacking half.
Substitution, Bradford City. Jamie Proctor replaces Filipe Morais.