Ollie Clarke’s 87th-minute winner earned ten-man Bristol Rovers victory over the Saddlers.
Rory Gaffney capitalised on a Jon Guthrie error to give the Pirates an early lead but James Wilson equalised with a second-half header.
Rovers were reduced to ten men on the hour when keeper Sam Slocombe was sent off for bringing down Amadou Bakayoko.
But instead it was the hosts who grabbed all three points when Clarke fired home from inside the box.
The Saddlers made a nightmare start, falling behind inside five minutes when Gaffney profited on a Jon Guthrie slip to run clear and coolly dink the ball over keeper Mark Gillespie.
Jon Whitney’s men responded well to the early setback and almost levelled through Amadou Bakayoko, who flashed a low drive narrowly wide from a tight angle.
Rovers immediately hit back, with Billy Bodin stinging the palms of Gillespie from 25 yards.
Walsall had a good chance to equalise on 16 minutes, when Erhun Oztumer’s lovely lofted pass picked out the run of Bakayoko but his first touch was heavy, allowing Sam Slocombe to gather.
Wing-backs Nicky Devlin and Luke Leahy combined to good effect moments later, the former standing up an accurate cross which the latter headed straight at Slocombe.
The Pirates twice went close to extending their lead around the 35th minute.
Bodin first took down a long ball and escaped the attentions of Leahy before testing Gillespie with a low strike at his near post.
Captain Tom Lockyer then went even closer as he headed Lee Brown’s corner inches over when completely unmarked.
The Saddlers should have scored from a set-piece themselves on 42 minutes, the unmarked Leahy nodding Oztumer’s free-kick a fraction wide from eight yards.
Walsall were first to threaten after the break, Bakayoko drilling a powerful, rising shot off target from 20 yards.
And the Saddlers did draw level on 58 minutes as Wilson headed Joe Edwards’ corner into the roof of the net.
Two minutes later and the Gas were down to ten men, Slocombe being shown a straight red card for bringing down Bakayoko after the striker had pounced on Daniel Leadbitter’s short back-pass.
Alexis Andre-Junior came on for his debut and was immediately called into action, getting down low to his left to tip Oztumer’s resulting free-kick wide.
The keeper was forced into another save 12 minutes from time as he tipped Edwards’ curling effort over the bar.
Jon Whitney’s men were doing all of the pressing but instead it was ten-man Rovers who went back in front, Liam Sercombe's cross breaking for Clarke to calmly fire home.
Shell-shocked, Walsall pressed for an equaliser, with debutant substitute Zeli Ismail seeing a close-range shot deflected fortuitously into the arms of Andre-Junior.
Bakayoko then volleyed agonisingly wide from the edge of the box and Donnellan had a first-time strike flicked over by Andre-Junior, but the Saddlers were unable to find a second goal.
Team: Gillespie, Wilson, Donnellan, Guthrie, Devlin (Ismail 82’), Chambers, Edwards, Leahy, Oztumer, Bakayoko, Agyei (T Roberts 78’).
Subs not used: L Roberts, Cuvelier, Jackson, Morris, K Roberts.
Attendance: 8,544 (482 Walsall supporters).