The Saddlers fell to back-to-back defeats after surrendering an early lead to lose at Peterborough in wintry conditions at London Road.
Played in sub-zero temperatures, the match got off to an electric start with a goal and a missed penalty inside the opening 12 minutes.
Walsall opened the scoring on nine minutes as ex-Posh playmaker Erhun Oztumer threaded a precise pass through to Julien Ngoy, who rounded keeper Jonathan Bond before firing home.
United had a glorious opportunity to equalise two minutes later, Jack Marriott showing blistering pace to run in behind the Saddlers defence before being pulled down by Jack Fitzwater.
Marcus Maddison took the resulting penalty but his effort was far too central and blocked by the legs of Liam Roberts.
Peterborough went close again on 21 minutes, Michael Doughty with a venomous volley from 20 yards which flashed just over the bar.
The Saddlers were coping better on the snowy surface and threatened to increase the lead, with Oztumer firing wide and Kieron Morris twice testing Bond from range.
Jon Whitney’s men felt they should have been awarded a penalty when George Dobson went down inside the area – but referee Lee Swabey instead booked him for diving.
All Walsall’s good work was undone six minutes before the break as Omar Bogle pounced on Nicky Devlin’s under-hit back-pass before slotting under Roberts.
Peterborough completed the turnaround eight minutes after half-time, captain Jack Baldwin drilling in through a crowd of bodies after Maddison’s fierce drive had come back off the post.
Walsall almost grabbed an equaliser with 14 minutes remaining as Maz Kouhyar’s 25-yard drive was palmed wide by Bond, with Luke Leahy heading against the post from Oztumer’s resulting corner.
As the conditions worsened, play was suspended with nine minutes left while groundstaff came on the snow-covered pitch with shovels to make the lines visible.
Once the game resumed, United nearly made it 3-1 but Marriott curled inches wide from inside the box.
Marriott again went close in added time but on this occasion he was denied by an excellent finger-tip stop from Roberts.
Team: L Roberts, Devlin, Fitzwater, Guthrie, Leahy, Chambers, Morris (Bakayoko 70’), Dobson, Oztumer, Kouhyar, Ngoy.
Subs not used: Gillespie, K Roberts, Kinsella, Cuvelier, Flanagan, Shaibu.
Attendance: 2,531 (81 Walsall supporters).