Alan Browne and Brad Potts scored goals in either half as Preston beat Stoke 2-0 in the Sky Bet Championship to get their first win at City in more than 20 years.
Browne fired home after 20 minutes before Potts made the game safe 10 minutes from time to end North End’s seven game winless streak at Stoke.
But the visitors had to withstand spells of second-half pressure with Declan Rudd pulling off two brilliant saves from Sam Clucas, including a 90th-minute penalty.
Joe Allen also had a shot cleared off the line before Potts finished off a brilliant counter attack to seal the win.
The visitors, who kept only their fifth clean sheet of the league campaign, started best as Jack Butland turned Paul Gallagher’s low shot behind for a third-minute corner.
Gallagher’s free-kick was turned behind for another corner on 12 minutes as the visitors continued to set the pace.
And the pressure paid off when Browne fired home his 10th goal of the season after Darnell Fisher’s shot had been blocked.
Butland saved a powerful Sean Maguire effort after he was played in by Gallagher on 25 minutes.
Peter Etebo miscued a volley wide on 37 minutes as Stoke began to get into an attacking stride.
Stoke had a penalty appeal turned down after Etebo went down under pressure from Potts on 39 minutes.
Tyrese Campbell headed over in stoppage time as City finally started to mount some pressure.
Fisher’s cross was turned behind for a corner as Maguire prepared to pounce on 50 minutes.
Rudd came out quick to smother Campbell’s long ball over the visiting defence as Clucas threatened to get free on 52 minutes.
Rudd did even better a minute later when he brilliantly saved from Clucas after Allen carved Preston open.
Allen had a shot cleared off the line by Ryan Shawcross as the home side cranked up the pressure.
Allen then had shouts for a penalty turned down after the ball appeared to strike Maguire on the arm.
Browne had a shot deflected behind for a corner by Lasse Sorensen on the hour mark, before he fired over 13 minutes later.
But Preston made the game safe with 10 minutes to go when Potts slotted cooly past Butland after Maguire’s perfect pass.
Rudd then saved a Clucas penalty on the stroke of full-time after Etobo was brought down by Potts.