The Saddlers’ unbeaten start to the League One season ended with a comprehensive defeat to Doncaster.
In a feisty affair, Morgan Ferrier headed the hosts in front but a John Marquis penalty, awarded for handball against Luke Leahy, levelled the scores.
Second-half strikes from Mallik Wilks, James Coppinger and Matty Blair gave Rovers victory, condemning Dean Keates’ men to a first loss in eight league games.
Doncaster dominated the early stages, registering the game’s first attempt on five minutes as Danny Andrew’s fizzing 25-yard free-kick was tipped over by Liam Roberts.
Against the run of play, the Saddlers should have taken the lead when Luke Leahy’s exquisite through ball released Josh Ginnelly, who bent his right-footed shot inches wide of the far post.
Grant McCann’s side were enjoying plenty of possession and went close again as ex-Saddler Andy Butler glanced a header wide from Andrew’s whipped centre.
The Rovers captain had a moment to forget as Walsall made the breakthrough on 17 minutes.
Under pressure from Andy Cook, Butler headed Josh Ginnelly’s cross back across goal for Ferrier to powerfully head home from close range, despite the best efforts of keeper Marko Marosi.
Buoyed, the hosts threatened to add a quick-fire second as Ginnelly’s deflected strike hit the side-netting.
The visitors almost drew level on the half-hour mark but John Marquis was thwarted by a combination of Roberts and a home defender from James Coppinger’s free-kick.
But Marquis and Rovers weren’t to be denied moments later, the striker sending Roberts the wrong way with a penalty after Luke Leahy was penalised for handball.
With Donny back in the ascendancy, Roberts produced a fine full-stretch save to parry Coppinger’s angled drive.
Only an excellent stop from Marosi prevented Walsall from restoring the lead shortly after the break.
Kieron Morris delivered a low cross towards Ferrier – who appeared certain to score from six yards out – but Marosi did superbly to smother his sweeping effort.
Instead, Rovers got their noses in front on 58 minutes as Mallik Wilks raced onto Ben Whiteman’s penetrative pass before finishing emphatically past Roberts at his near post.
The home side were then given a mountain to climb as Doncaster made it 3-1, Coppinger curling a sublime right-footed effort in off the bar after a pacey counter-attack.
The Saddlers struggled to find a route back into the game; Connor Ronan’s fierce strike was blocked by Butler and Josh Gordon was unable to turn home Ginnelly’s cross.
Walsall’s day went from bad to worse as Doncaster further increased their lead in stoppage time, Blair rifling a blistering shot into the top corner from 12 yards.
Team (4-4-2): L Roberts; Devlin, Fitzwater, Guthrie, Leahy; Morris (Ismail 72’), Osbourne (Ronan 53’), Dobson, Ginnelly (Gordon 80'); Cook, Ferrier.
Subs not used: Dunn, Johnson, Wilson, Kinsella.
Attendance: 4,546 (496 Doncaster supporters).