Walsall fought off a late Stoke revival and Spaniard Zigor Aranalde made sure of their first win in seven games with an 83rd minute penalty.
But Jorge Leitao was the Saddlers' hero in an inspired 15-minute spell during a second half which had almost everything.
The first 45 minutes were goalless and disappointing, although Stoke had looked the better side, but it was a different story after the break and Leitao began the excitement with a 51st minute goal.
It came from a header on by Aranalde and Leitao picked his spot to notch his seventh goal of the season.
Stoke's Brynjar Gunnarsson hit the post with a 20-yard shot only a minute later and Walsall rode their luck to notch a second goal in the 57th minute.
This time defender Danny Hay made a fine interception, played the ball through and Brazilian Junior pushed it on for fellow striker Leitao to steer in a low shot after a good jinking run.
Walsall went three goals ahead just nine minutes later. Leitao went through on the left and had the chance to complete his hat-trick, but he unselfishly elected to set it up for Junior who made no mistake from close range.
Stoke's new manager Tony Pulis, made a double substitution in the 70th minute bringing on Andy Cooke and Chris Greenacre for Bjarni Gudjonsson and Chris Iwelumo.
The balance changed and following a 77th minute corner from Lewis Neal, Cooke scrambled the ball home, although Walsall's players claimed that keeper Gavin Ward had held it before it crossed the line.
Stoke, inspired by that good fortune, stormed into the attack again and from another Neal corner, Cooke scrambled another goal.
That was in the 81st minute, but two minutes later Stoke's challenge ended when Aranalde scored from the spot after Wayne Thomas had fouled Walsall substitute David Zdrilic