The FA Cup finalists looked on course for a potentially decisive win in their pursuit of a Premier League top-four place as Yaya Toure put them ahead at Goodison Park.
The visitors squandered several chances to make victory safe and were stunned when former City defender Distin equalised and in-form Osman grabbed a winner.
With David Silva at his influential best, City seemed in little trouble as they dictated play.
Yet Everton have become their bogey side in recent years and the Merseysiders hit back to win for the seventh time in eight meetings.
City now face their chief rivals for fourth, Tottenham, on Tuesday knowing they cannot ease up ahead of next week’s trip to Wembley.
Much talk before the game centred on Joleon Lescott’s first return to Goodison since his controversial £22million move to City 21 months ago.
Yet it was Distin, also facing his old club, who turned the match and Osman settled it with his fourth goal in nine games.
City left Mario Balotelli, Gareth Barry and Adam Johnson out of their line-up and talisman Carlos Tevez, as expected, did not appear.
City soon asserted themselves, although Everton had the first chance when Osman fired over from a cleverly-worked Leighton Baines free-kick.
The visitors looked composed in possession with Silva exhibiting some sublime touches.
The Spaniard went close after brilliantly controlling a hopeful punt from Vincent Kompany and beating Tony Hibbert to shoot across goal.
He showed more skill when he tapped a James Milner cross into the six-yard box but Patrick Vieira volleyed over.
Milner found space in the area as Everton pushed up but he opted to pass instead of shooting and the hosts got back to clear.
The respite was shortlived for the hosts, however, as City claimed the lead moments later, in the 28th minute.
Silva was again the orchestrator, although he benefited from a lucky ricochet as he took the ball past Distin.
He found Toure unmarked to his right and the Ivory Coast international powered forward to clip the ball over Tim Howard.
Edin Dzeko tested Howard with a fierce shot from the edge of the area after the restart but the American gathered well.
Silva created another good chance for Toure when he threaded a low ball into the area but the former Barcelona midfielder sidefooted over.
Kompany needed to be alert to deny Jack Rodwell a shooting chance early in the second half.
The ball looked to be rolling to the midfielder in the box after a powerful Baines free-kick struck Toffees substitute Jermaine Beckford but the Belgian defender got a foot in.
City replied with a quick breakaway as Silva freed Toure but Howard stood up well and denied the advancing midfielder with his feet.
Dzeko then headed wide from an Aleksandar Kolarov free-kick as City built more pressure.
A scuffle broke out when Kompany responded to a Rodwell tackle on Nigel de Jong by pushing the Everton midfielder.
Rodwell’s subsequent reaction led to both he and Kompany being booked.
City quickly got back into their stride and Dzeko, looking for his second Premier League goal, struck a firm shot wide from the edge of the area.
The visitors paid the price for their profligacy as Everton equalised in the 66th minute through Distin.
Everton had sent on Tim Cahill – scorer of five goals against City – just moments earlier and the Australian went straight into the box for an Arteta free-kick.
But it was Distin who did the damage, rising at the far post to power a header into the bottom corner which Joe Hart failed to keep out.
The goal infused Everton with confidence and Beckford went through.
The striker was ruled marginally offside and chipped wide anyway, but nevertheless it was a warning for City.
It was one they failed to heed as the Toffees grabbed a second in the 72nd minute.
Neville delivered an inviting cross into the area and Osman timed his leap superbly, beating Kompany in the air and glancing a looping header over Hart into the top corner.
It almost got worse for City as Beckford shot straight at Hart from close range.
City’s frustrations were perhaps evident at the final whistle as Cahill and Kolarov appeared to argue with each other while Neville exchanged words with the visitors’ assistant boss Brian Kidd.