Match ends, Walsall 3, Bradford City 2.
Walsall halted a five-game losing streak to deepen Bradford's relegation worries with a thrilling home victory - despite playing virtually the whole game with 10 men.
Saddlers top scorer Andy Cook was sent off after just six minutes for elbowing Nathaniel Knight-Percival.
And Bradford quickly capitalised by going ahead in the 12th minutes as Eoin Doyle headed home Jack Payne's cross.
Walsall levelled in the 42nd minute when Josh Gordon rifled home a loose ball in the box, and the 10 men led in the 47th minute when Joe Edwards nodded home after Matt Jarvis' header came back off the bar.
Bradford equalised in the 53rd minute, with Anthony O'Connor slotting in after Walsall keeper Liam Roberts had parried Lewis O'Brien's fierce strike.
O'Brien rattled the bar from 25 yards and a Payne shot was cleared off the line by Jon Guthrie - but Walsall won it just after the hour mark when Gordon flashed a header home from Luke Leahy's corner.
Bradford could have rescued a point but Guthrie blocked Doyle's point-blank volley and Roberts saved superbly from Payne to leave City three points from safety.
Match report supplied by the Press Association.
Line-ups
Walsall
Formation 4-2-3-1
- 1Roberts
- 6DevlinBooked at 24mins
- 35Scarr
- 5Guthrie
- 3Leahy
- 2Edwards
- 15Kinsella
- 29GordonSubstituted forOtehat 83'minutes
- 10IsmailSubstituted forOsbourneat 79'minutes
- 11JarvisBooked at 53minsSubstituted forDobsonat 87'minutes
- 9CookBooked at 6mins
Substitutes
- 4Dobson
- 13Dunn
- 27Fitzwater
- 30Osbourne
- 34Laird
- 36Oteh
- 38Blackett-Taylor
Bradford
Formation 4-2-3-1
- 1O'Donnell
- 38CaddisSubstituted forMellorat 85'minutes
- 6O'Connor
- 22Knight-Percival
- 3Chicksen
- 16ButterfieldBooked at 74mins
- 39O'BrienBooked at 34minsSubstituted forMillerat 85'minutes
- 40Ball
- 10Payne
- 17ClarkeSubstituted forAndersonat 72'minutes
- 9Doyle
Substitutes
- 12Miller
- 13Wilson
- 15Mellor
- 18Anderson
- 21Akpan
- 23Wood
- Referee:
- Brett Huxtable
- Attendance:
- 5,503
Match Stats
- Possession
- Home48%
- Away52%
- Shots
- Home8
- Away23
- Shots on Target
- Home4
- Away7
- Corners
- Home2
- Away6
- Fouls
- Home11
- Away12
Live Text
Post update
Full Time
Second Half ends, Walsall 3, Bradford City 2.
Post update
Attempt missed. Nathaniel Knight-Percival (Bradford City) header from the left side of the six yard box is close, but misses to the left.
Post update
Hand ball by Luke Leahy (Walsall).
Post update
George Dobson (Walsall) wins a free kick in the defensive half.
Post update
Foul by David Ball (Bradford City).
Post update
Attempt blocked. David Ball (Bradford City) right footed shot from outside the box is blocked.
Post update
Corner, Bradford City. Conceded by Jon Guthrie.
Post update
Attempt blocked. Adam Chicksen (Bradford City) left footed shot from the left side of the box is blocked.
Post update
Attempt blocked. Jack Payne (Bradford City) left footed shot from the centre of the box is blocked.
Substitution
Substitution, Walsall. George Dobson replaces Matthew Jarvis.
Substitution
Substitution, Bradford City. George Miller replaces Lewis O'Brien.
Substitution
Substitution, Bradford City. Kelvin Mellor replaces Paul Caddis.
Post update
Attempt saved. David Ball (Bradford City) right footed shot from the left side of the box is saved in the bottom left corner.
Post update
Attempt saved. Jack Payne (Bradford City) right footed shot from the centre of the box is saved in the bottom left corner.
Substitution
Substitution, Walsall. Aramide Oteh replaces Josh Gordon.
Post update
Attempt blocked. Eoin Doyle (Bradford City) right footed shot from the centre of the box is blocked.
Post update
Foul by Josh Gordon (Walsall).
Post update
Paul Caddis (Bradford City) wins a free kick in the defensive half.
Post update
Attempt blocked. Matthew Jarvis (Walsall) left footed shot from the left side of the six yard box is blocked.