Craig Westcarr struck a brace as a stirring second half performance saw Walsall beat Crewe.
The striker, recalled to the starting line-up, fired home with 25 minutes remaining of what had been to that point an even contest with few chances.
And he doubled the lead four minutes later from the penalty spot after being felled by Gregor Robertson.
Substitute James Baxendale then made sure of the points in the closing stages.
For a long time this game had looked destined for a goal-less draw, until the Saddlers rediscovered a clinical edge which has been lacking in recent games.
Victory snapped a five game winless streak for Dean Smith’s side.
Troy Hewitt was rewarded for his excellent goalscoring cameo against Wolves last time out with his first start. James Baxendale was dropped to the bench, with Nicky Featherstone, Sam Mantom and Adam Chambers all starting in midfield.
The first half largely saw the sides cancel each other out, with attempts on goal at a premium.
Mark Ellis had the first attempt on goal for the home side, heading over Lee Molyneux’s corner.
There was little goalmouth acrtion at either end in the opening 15 minutes but when there was it was generally the hosts doing the attacking and Chuks Aneke saw a shot blocked by Adam Chambers.
Walsall’s first attempt, as such, was an acrobatic Westcarr attempt which was easily gathered by Steve Phillips in the home goal.
The next chance did not come from either side until when Aneke lofted a shot from distance well over the bar.
Bradden Inman did at least force O’Donnell into action with a low shot from just outside the box, which was straight at the Saddlers keeper.
The Saddlers next effort did not come until the final minute of the half, when Mantom swept a Westcarr free-kick over the bar from the edge of the box.
Vadaine Oliver had the firstchance of the second period but shot wide from the edge of the box following a quick break from the hosts.
But it was Phillips who was forced into the first serious work of the afternoon for either keeper, diving to his left to push away a low Mantom drive from around 25 yards out.
The game was certainly more open than the first half, even if chances remained rare. Oliver was off target with a header from a Tootle cross before Westcarr put the Saddlers clear.
There was more action in the minute before the goal than in the preceding 65, following a Hemmings corner.
Phillips did brilliantly to deny Andy Butler at close range but the hosts couldn’t clear and the ball eventually fell to Westcarr, whose shot seemed to take a deflection past Phillips.
Hewitt missed a golden chance to make it two moments later when he fired over clean through, while Leitch-Smith almost levelled at the other end when his shot slipped just past the post.
But the Saddlers then did go two up, with Westcarr again at the centre of things. He was felled by Robertson after going past the defender and then sent Phillips the wrong way from the spot after getting back on his feet.
The striker then flashed a volley from the edge of the box just a few feet wide as he looked to complete a quickfire hat-trick.
Crewe were shell-shocked and substitute Max Clayton drove wide as they searched for a way back into the game.
But Baxendale made the game safe six minutes from time when he went clear and finished coolly past Phillips.
Featherstone almost added a fourth in stoppage time but his shot from distance was palmed onto the bar and behind by Phillips.