Match ends, Walsall 1, Bristol Rovers 3.
Bristol Rovers climbed out of the League One relegation places as a win at Walsall handed Pirates caretaker manager Graham Coughlan back-to-back victories.
Rovers led after seven minutes as Walsall failed to clear a free-kick and skipper Tom Lockyer steered home Alex Rodman's low return ball across the face of the six-yard box.
Rodman turned from provider to scorer to double the lead after 10 minutes, excellently volleying home Tareiq Holmes-Dennis' far-post cross despite Jack Fitzwater's attempt to clear it off the line.
Walsall - who slipped to 14th with defeat - missed a glorious chance to halve their deficit three minutes later as Jon Guthrie nodded Nicky Devlin's deep centre onto the post from close range.
They did pull one back after 45 minutes as Andy Cook nodded down a free-kick and Josh Gordon hooked a great finish over his own shoulder from 12 yards.
But Rovers sealed the points after 52 minutes as Alex Jakubiak's incisive run and pass found Holmes-Dennis, who took a touch before slotting past Liam Roberts.
Match report supplied by the Press Association.
- 3LeahyBooked at 72mins
- 8MorrisSubstituted forRonanat 78'minutes
- 10IsmailSubstituted forEdwardsat 59'minutes
- 29GordonSubstituted forFerrierat 59'minutes
- 15J Clarke
- 8O Clarke
- 3Holmes-DennisBooked at 40minsSubstituted forNicholsat 80'minutes
- 17JakubiakSubstituted forPayneat 87'minutes
- 20ReillyBooked at 43minsSubstituted forSercombeat 72'minutes
- Robert Lewis
- Shots on Target
Second Half ends, Walsall 1, Bristol Rovers 3.
Foul by Andy Cook (Walsall).
Tony Craig (Bristol Rovers) wins a free kick in the attacking half.
Substitution, Bristol Rovers. Stefan Payne replaces Alex Jakubiak.
Corner, Walsall. Conceded by Ollie Clarke.
Attempt blocked. Connor Ronan (Walsall) left footed shot from outside the box is blocked.
Substitution, Bristol Rovers. Tom Nichols replaces Tareiq Holmes-Dennis.
Substitution, Walsall. Connor Ronan replaces Kieron Morris.
Kieron Morris (Walsall) wins a free kick in the attacking half.
Foul by Ollie Clarke (Bristol Rovers).
Joe Edwards (Walsall) wins a free kick in the defensive half.
Foul by Ed Upson (Bristol Rovers).
Foul by Morgan Ferrier (Walsall).
Ed Upson (Bristol Rovers) wins a free kick in the defensive half.
Substitution, Bristol Rovers. Liam Sercombe replaces Gavin Reilly.
Luke Leahy (Walsall) is shown the yellow card for a bad foul.
Foul by Luke Leahy (Walsall).
Alex Rodman (Bristol Rovers) wins a free kick on the left wing.
Corner, Walsall. Conceded by Tom Lockyer.