Bristol Rovers worked hard all week on sorting out defensive failures, but found themselves two goals down well inside the first 30 minutes from corners.
They came from opposite sides of the pitch - the first hooked in by Michael Ricketts and the second skimmed high into the far corner off the header of Stephen Roberts.
Both were engineered by Marco Reich and show how far Walsall were on top - they came from his third and seventh corners.
Walsall's lead came at some cost for defender Anthony Gerrard, who dislocated his left shoulder as he turned Reich's flag-kick for the first goal into Ricketts' path.
Throughout the half, Walsall's striking pair of Ricketts and Jabo Ibehre caused havoc in a threadbare Rovers defence, which was just about held together by Byron Anthony's thrusting head.
He did not see out the match though, being red-carded in injury time for a tackle from behind.
Rovers had no way to match Walsall's attacking pair as Ricky Lambert - in his 100th game - and Darryl Duffy failed to work up much in the way of a partnership.
Rovers only chance of the opening half came when Craig Disley sprinted through but was easily robbed inside the box.
He almost made up for it with a header against the bar from Rovers' first corner early in the second half.
That sparked off Rovers' brightest spell and brought bookings for Walsall keeper Ince and Ibehre, while manager Jimmy Mullen was sent to the stand for running onto the pitch.
Walsall's hopes of a first clean sheet vanished when Steve Elliott volleyed past Ince.
But their win was firmed up from the penalty spot after Anthony had been sent off for bringing down Troy Deeney from behind and Ricketts rammed the spot-kick home.