Ross Barkley's stunner put hosts Everton ahead in the 11th minute, but Sergio Aguero quickly equalised and a brace from Edin Dzeko secured victory for Manuel Pellegrini's side despite Romelu Lukaku reducing the deficit.
City now lead previous leaders Liverpool on goal difference -- +59 to +50 -- and will therefore be practically assured of winning the title if they win their two remaining games. Chelsea and Liverpool each have opportunities to take over at the summit over the next two days, but if City beat Aston Villa on Wednesday and win at home to West Ham United next weekend, they are unlikely to be caught.
Everton's defeat, meanwhile, means that Arsenal are guaranteed to finish at least as high as fourth, guaranteeing them a place in next season's UEFA Champions League play-offs.
Everton's fans were in the uncomfortable position of knowing that victory for their side would hand the title initiative to their city rivals Liverpool, but Barkley's strike was a goal that demanded to be celebrated. After Steven Naismaith rolled Leighton Baines's pass into his path, the 20-year-old england midfielder looked up and unleashed a magnificent first-time shot into the top-right corner from 25 yards.
Aguero equalised just 11 minutes later, however, rattling home at the near post from Yaya Toure's pass, and although he was then forced off with an apparent groin injury, City powered on. Dzeko put the visitors in front in the 43rd minute with an imperious header from a James Milner cross and after Joe Hart had saved from Naismith early in the second half, the Bosnian stabbed home Samir Nasri's cross to make it 3-1.
Lukaku's 65th-minute diving header brought Everton back into the game, but City survived a nail-biting last half an hour -- Hart notably saving from substitute Gerard Deulofeu -- to close on the title.
Fulham's 13-year run in the English top flight was ended by a 4-1 defeat at Stoke City, while Cardiff went straight back down to the Championship following a 3-0 loss at Newcastle United. Both sides' fates were sealed by fourth-bottom Sunderland's unexpected 1-0 win at Manchester United, which took Gus Poyet's side four points above Fulham and five points clear of bottom club Cardiff.
"I've never been relegated until today," Fulham manager Felix Magath said. "I feel very sad. I have to apologise for not managing the situation. The club asked me to come. I tried."
"The realisation that we're down is one of the most bitter disappointments of both mine and many of the players' careers," Cardiff manager Ole Gunnar Solskjaer said.
Sunderland will effectively be safe if third-bottom Norwich City lose at Chelsea on Sunday after Sebastian Larsson's 30th-minute goal at Old Trafford condemned United to their 12th league defeat of the season.
"I feel flat," interim United manager Ryan Giggs said, whose side have lost seven home league games for the first time since they were relegated to the old Division Two in 1974. "The players were flat and I don't know why. We've had a problem at home all season. It's not been good enough."
Elsewhere, Andreas Weimann scored twice as Aston Villa won 3-1 at home to FA Cup finalists Hull City, while Southampton striker Rickie Lambert claimed a 93rd-minute winner in a 1-0 victory at Swansea City.