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 arrears.
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 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 arced 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.
– ‘Flat’ United puzzle Giggs –
Meanwhile, Fulham and Cardiff City were both relegated after defeats in their penultimate games of the season left them unable to reach safety.
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.
Peter Odemwingie, Marko Arnautovic, Oussama Assaidi and Jonathan Walters scored the goals that accounted for Fulham at the Britannia Stadium, with Kieran Richardson replying in vain for the visitors.
“I’ve never been relegated until today,” said Fulham manager Felix Magath. “I feel very sad. I have to apologise for not managing the situation. The club asked me to come. I tried.”
Goals from Newcastle trio Shola Ameobi, Loic Remy and Steven Taylor sent Cardiff back to the second tier just a year after their promotion from the Championship.
“The realisation that we’re down is one of the most bitter disappointments of both mine and many of the players’ careers,” said Cardiff manager Ole Gunnar Solskjaer.
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. The players were flat and I don’t know why,” said interim United manager Ryan Giggs, whose side have lost seven home league games for the first time since they were relegated to the old Division Two in 1974.
“We’ve had a problem at home all season. It’s not been good enough.”
United’s defeat means that Tottenham Hotspur need only a point to secure sixth place, and with it Europa League qualification, despite having lost 2-0 at West Ham United earlier in the day.
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.