Sheffield United took their unbeaten run to six league games and handed Stoke a third straight home loss.
Blades keeper Ian Bennett had to tip over Rory Delap's lofted shot early on and Ricardo Fuller curled an effort wide as Stoke made the early running.
But the Blades improved and after David Carney shot into the side-netting, Gary Cahill headed in a Danny Webber cross.
Bennett denied Jon Parkin, while Ryan Shawcross' stinging volley was saved as Stoke pressed but the visitors held on.
Stoke boss Tony Pulis:
"We are massively disappointed. I don't think we have had the breaks in the last three home games. Things haven't seemed to break for us and we could have won all three.
"I don't think Steve Simonsen has had a save to make and we have lost the game.
"I have been involved in football for a long time so I am used to this but it does hurt. Everyone in the dressing room is absolutely gutted because we should not have lost that match."
Sheffield United boss Bryan Robson:
"There was great resilience and determination from the players. Stoke remind me of the old Wimbledon team.
"They have five or six players who are 6ft 4ins and over and it's very difficult to play against.
"But the lads threw their heads on the ball, anticipated the second bounces and got great blocks in. It was a performance full of fight and workrate for each other."
Stoke: Simonsen, Wright (Phillips 78), Cort, Shawcross, Wilkinson (Pericard 90), Cresswell, Delap, Eustace, Pugh, Fuller, Sidibe (Parkin 66).
Subs Not Used: Hoult, Zakuani.
Sheff Utd: Bennett, Bardsley, Cahill, Kilgallon, Naysmith, Gillespie, Armstrong, Montgomery, Carney (Tonge 90), Webber (Lucketti 88), Beattie.
Subs Not Used: Shelton, Stead, Alan Quinn.
Booked: Cahill, Gillespie.
Goals: Cahill 43.
Ref: Keith Stroud (Hampshire).