Play-off chasing Port Vale made it three League Two wins on the bounce with victory at Bradford.
Ben Garrity and James Wilson were on target to leave Vale within two points of the top seven.
Bradford keeper Alex Bass tipped away Brad Walker’s free-kick before winger David Worrall twice went close to giving the visitors a first-half lead.
Matty Foulds blocked one shot and then Worrall should have done better when he dragged another effort across goal after being played in by James Wilson.
Bradford were thwarted by the woodwork as Andy Cook’s shot deflected off Walker and against the bar.
But Vale took the lead five minutes into the second half. Wilson fired a low cross into the six-yard box and Gareth Evans could only clear as far as Garrity, who fired past Bass for his 12th goal of the season.
Vale went further ahead after 63 minutes through Wilson’s solo finish, although Bradford claimed that defender Yann Songo’o was fouled in the build-up.
Substitute Charles Vernam pulled one back within a minute of coming on and Cook headed just wide but Vale hung on for the three points.
Report supplied by PA Media.
- 30DelfounesoSubstituted forWalkerat 69′minutesBooked at 73mins
- 22SuttonSubstituted forVernamat 69′minutes
- 6SmithBooked at 78mins
- 4WalkerBooked at 40mins
- 20CharsleyBooked at 22minsSubstituted forEdmondsonat 90+4′minutes
- 11BenningBooked at 72mins
- 9WilsonSubstituted forHarrattat 76′minutes
- 13ProctorSubstituted forAmooat 85′minutes
Match ends, Bradford City 1, Port Vale 2.
Second Half ends, Bradford City 1, Port Vale 2.
Charles Vernam (Bradford City) wins a free kick in the attacking half.
Foul by Ben Garrity (Port Vale).
Substitution, Port Vale. Ryan Edmondson replaces Harry Charsley.
Corner, Bradford City. Conceded by Malvind Benning.
Attempt missed. Andy Cook (Bradford City) right footed shot from the centre of the box is close, but misses to the left.
Offside, Port Vale. David Worrall tries a through ball, but Kian Harratt is caught offside.
Substitution, Port Vale. David Amoo replaces Jamie Proctor.
Gareth Evans (Bradford City) wins a free kick in the defensive half.
Foul by Jamie Proctor (Port Vale).
Attempt blocked. Jamie Proctor (Port Vale) right footed shot from outside the box is blocked. Assisted by Harry Charsley.
Attempt missed. Andy Cook (Bradford City) header from very close range is close, but misses to the left. Assisted by Luke Hendrie with a cross.
Attempt blocked. Kian Harratt (Port Vale) left footed shot from the right side of the box is blocked. Assisted by Brad Walker.
Nathan Smith (Port Vale) is shown the yellow card for a bad foul.
Dion Pereira (Bradford City) wins a free kick in the defensive half.
Foul by Nathan Smith (Port Vale).
Substitution, Port Vale. Kian Harratt replaces James Wilson.
Attempt missed. Jamie Walker (Bradford City) right footed shot from the left side of the box misses to the left. Assisted by Andy Cook with a headed pass.
Attempt blocked. Charles Vernam (Bradford City) left footed shot from outside the box is blocked. Assisted by Andy Cook.