Senegalese striker Mame Biram Diouf scored a memorable solo goal in the 58th minute to give Stoke manager Mark Hughes victory over his former club.
It was only the second time City had failed to score at home in 71 league matches and only their second home defeat since May 2013.
"It's a surprising defeat because we don't expect to lose against Stoke, but these games sometimes happen," said City manager Manuel Pellegrini.
"We tried from everywhere. We are not very creative, we did not find the space, and that is credit to Stoke."
City handed a first start of the season to striker Sergio Aguero, while French right-back Bacary Sagna made his debut following his close-season switch from Arsenal, and the hosts enjoyed the best of the first half.
Stoke goalkeeper Asmir Begovic had to push away a powerful drive from Samir Nasri and Yaya Toure hit the crossbar, although Pellegrini's side also lost Fernando to injury, with Fernandinho coming on in his place.
Stoke refused to buckle, however, and shortly before the hour they took the lead.
Former Manchester United striker Diouf picked the ball up in his own half, beat Aleksandar Kolarov and outmuscled Vincent Kompany before squeezing a shot between the legs of City goalkeeper Joe Hart.
Pellegrini sent on Jesus Navas and Edin Dzeko for Nasri and Stevan Jovetic, but with Toure denied a late penalty after a wild challenge by Erik Pieters, the visitors held on.
- 'United have to win' -
Earlier, British-record signing Angel di Maria was unable to inspire Manchester United to victory on his debut as they drew 0-0 at promoted Burnley.
A pound sterling59.7 million ($98 million, 75 million euros) acquisition from Real Madrid, Di Maria started the game, but despite some probing passes and darting runs, he could not illuminate United's path to goal against Sean Dyche's side.
Having seen his team beaten by Swansea City and held by Sunderland before being humiliated 4-0 by third-tier Milton Keynes Dons in the League Cup, new United manager Louis van Gaal has now gone four competitive games without recording a win.
"We were the stronger team, certainly in the second half," van Gaal told BT Sport. "We created chances, but you have to score. That is where we have failed. The progress is there, but you have to win.
"A club like Manchester United has to win. We have two points from nine and that's disappointing."
City's slip-up against Stoke allowed Swansea to provisionally move three points clear at the top of the standings by beating West Bromwich Albion 3-0 at the Liberty Stadium.
Nathan Dyer rounded Ben Foster to open the scoring in the second minute and made the game safe with a second goal 19 minutes from time after Wayne Routledge had made it 2-0 mid-way through the first half.
Neil Warnock's second stint as Crystal Palace manager began in thrilling fashion after Wilfried Zaha marked his return to the club by scoring a 95th-minute equaliser to earn a 3-3 draw at Newcastle United.
Newcastle twice fell behind, but they looked to have secured victory in the 88th minute when Mike Williamson scored from close range, only for Zaha -- back at Palace on loan from Manchester United -- to drill home deep into injury time.
Dwight Gayle had put Palace ahead after only 31 seconds, with Daryl Janmaat equalising, and after Jason Puncheon restored the visitors' lead early in the second half, Newcastle substitute Rolando Aarons equalised in the 73rd minute.
Elsewhere, a 45th-minute Charlie Austin goal saw Queens Park Rangers claim their first victory of the season in a 1-0 win over Sunderland, while Morgan Schneiderlin scored twice as Southampton came from behind to win 3-1 at West Ham United.
Saturday's late game sees Chelsea visit Everton, when Samuel Eto'o could make his debut for the hosts against his former club.