Match ends, Walsall 0, Port Vale 1.
Tom Pope scored his first goal since returning from injury to end Walsall's five-game unbeaten run and earn Port Vale a first win in five matches.
The Saddlers were denied a first-half penalty, Ryan Inniss appearing to pull down Jordy Hiwula when clean through.
Pope then headed the only goal of the game on 28 minutes when he headed in Carl Dickinson's left-wing cross.
Walsall's Romaine Sawyers hit the post before Vale keeper Chris Neal saved from Jordan Cook to secure victory.
|Vale's decent derby record against Walsall|
|Vale have not lost now in nine league derby clashes with Walsall, a record dating back to August 2004, when Paul Merson was still a Saddlers player|
Wembley-bound Walsall had not lost in five games, during which time they had reached the Johnstone's Paint Trophy final.
Vale, who lost veteran midfielder Michael Brown at half-time with a foot injury, went into the game on the back of a run of just one point out of a possible 12.
But their first clean sheet in 13 games (since a 1-0 home win against Rochdale on 15 November) helped them climb back up to 14th in the League One table.
They are now within four points of the play-off places, just behind 13th-placed Walsall, who are a point better off.
Walsall manager Dean Smith told BBC WM 95.6:
"The whole game hinged on the penalty incident in the 23rd minute. It was a clear penalty and a sending off. Why else would our player go down in that situation?
"Their goal was a foul, although we switched off as the cross came in, which was disappointing.
"We were good in the first half and they were hanging on going into the break, but it took us too long to get going at the start of the second half."
Port Vale manager Rob Page told BBC Radio Stoke:
"From number one to eleven, with our work rate and effort, we thoroughly deserved the three points and the clean sheet.
"Ryan Inniss was immense on his debut. He was a head on a stick at times for us.
"In the last 10 minutes, he came out and put his head through balls and clear it which gave us an opportunity to get up the pitch."
- 6DowningBooked at 66mins
- 3TaylorBooked at 53mins
- 11BaxendaleSubstituted forGrimesat 55'minutes
- 12CainSubstituted forMurphyat 80'minutes
- 30Hiwula-MayifuilaSubstituted forHenryat 74'minutes
- 33InnissBooked at 71mins
- 17BrownSubstituted forLinesat 45'minutes
- 20MarshallSubstituted forBirchallat 90+2'minutes
- 9WilliamsonSubstituted forO'Sullivanat 84'minutes
- 11PopeBooked at 89mins
- Andy D'Urso
- Shots on Target
Second Half ends, Walsall 0, Port Vale 1.
Tommy O'Sullivan (Port Vale) wins a free kick on the left wing.
Foul by Rico Henry (Walsall).
Foul by Tommy O'Sullivan (Port Vale).
Andy Taylor (Walsall) wins a free kick on the right wing.
Substitution, Port Vale. Chris Birchall replaces Mark Marshall.
Attempt missed. Jordan Murphy (Walsall) right footed shot from outside the box is close, but misses to the right.
Attempt saved. Jordan Cook (Walsall) right footed shot from outside the box is saved in the bottom left corner.
Corner, Port Vale. Conceded by Adam Chambers.
Tom Pope (Port Vale) is shown the yellow card.
Attempt missed. Tommy O'Sullivan (Port Vale) left footed shot from outside the box is close, but misses to the left.
Substitution, Port Vale. Tommy O'Sullivan replaces Ben Williamson.
Attempt saved. Andy Taylor (Walsall) left footed shot from outside the box is saved in the top right corner.
Foul by Michael O'Connor (Port Vale).
Romaine Sawyers (Walsall) wins a free kick in the attacking half.
Substitution, Walsall. Jordan Murphy replaces Michael Cain.
Attempt missed. Adam Chambers (Walsall) right footed shot from outside the box is just a bit too high.
Attempt missed. Mark Marshall (Port Vale) right footed shot from the left side of the box is close, but misses to the right.
Foul by Michael O'Connor (Port Vale).