Luke Leahy missed a last-minute penalty as the Saddlers had to settle for a point against promotion hopefuls Peterborough.
Isaiah Osbourne’s third goal of the season put Walsall ahead but Ivan Toney drew Posh level immediately after the restart.
Dean Keates’ men really should have won, with Josh Gordon missing a gilt-edge chance and Leahy seeing his penalty saved by Conor O’Malley.
The Saddlers started brightly and almost took the lead when Jon Guthrie rose highest to meet Luke Leahy’s sixth-minute corner but his downward header was blocked by Alex Woodyard on the line.
Kane Wilson was next to go close for the visitors with an instinctive volley from Leahy’s half-cleared long throw which deflected narrowly wide of the far post.
Posh didn’t register a meaningful attempt until just shy of the half-hour mark, Ivan Toney receiving possession 25 yards out and hitting a low drive which keeper Liam Roberts held comfortably.
Toney should have done better with another attempt five minutes later, slicing a side-footed volley wide when unmarked after being picked out by Louis Reed’s floated cross.
Peterborough had grown into the contest after a slow start, but it was Walsall who broke the deadlock in first half injury time.
United stopper Conor O’Malley failed to claim Leahy’s hopeful long ball into the box, with Nicky Devlin unselfishly heading across goal for Osbourne to nod home his third goal of the season.
But the visitors were pegged back just two minutes after the restart when Toney met Marcus Maddison’s in-swinging corner ahead of Roberts to head in an equaliser.
Walsall responded well to that setback, almost regaining the lead as Osbourne intelligently found Liam Kinsella, whose low strike was cleared by a sliding Jason Naismith from virtually on the line.
A huge chance came and went for the Saddlers with ten minutes left.
Morris’ inviting right-wing delivery found Josh Gordon unmarked in the centre of goal but the forward’s close-range header was saved by O’Malley, with Kane Wilson putting the rebound wide.
Maddison wasn’t too far away at the other end, cutting infield before drilling a left-footed shot wide.
The visitors had a glorious chance in the final minute of the 90 when O’Malley hauled down Devlin but he made amends by saving Leahy’s tame penalty low down to his right.
There was still time for Cook to go close in added time – but O’Malley was again on hand to rescue Posh, doing well to smother the opportunity.
Peterborough (4-4-2): O’Malley; Ward, Naismith, Bennett, Daniel; Maddison, Reed (O’Hara 45’), Woodyard, Dembele (Cooper 77’); Toney, Godden (Stevens 57’).
Subs not used: Chapman, Lyon, Denton, Cummings
Saddlers (4-4-2): L Roberts; Devlin, Fitzwater, Guthrie, Leahy; Morris, Kinsella, Osbourne (Dobson 73’), Wilson; Gordon (Ferrier 81’), Cook.
Subs not used: Dunn, Edwards, Ismail, Johnson, Ronan.