Phil Foden’s late goal condemned Everton to a 1-0 defeat at Goodison Park as Manchester City extended their lead over Liverpool to six points.
The Premier League champions dominated the second half but had to work hard for their win with Rodri coming close to giving away a penalty in the closing stages.
On an emotional evening at Goodison, in which support for Ukraine was a pre-match focus, Frank Lampard's side showed plenty of commitment throughout. But the defeat leaves them now only one point above the relegation zone because of results elsewhere.
Pep Guardiola's City had to rely on an error from Michael Keane for the only goal in the 82nd minute - and Rodri not being penalised when the ball struck him on the upper arm.
But the victory, a 15th in 17 Premier League games, means they move one step closer to retaining their title - six points clear now, though Liverpool have a game in hand.
Ukraine tributes at Goodison Park
Everton had been acutely aware of the importance of sensitivity given the events in Ukraine. Vitaliy Mykolenko was named on the bench for the home side, while fellow Ukraine international Oleksandr Zinchenko was also among the Manchester City substitutes.
The sirens from Z Cars, traditionally played as the teams emerge from the tunnel at Goodison Park were absent. Instead, there was a Hollies song: He Ain't Heavy, He's My Brother. Defiant applause rang out from all four corners of this famous old ground.
The Everton players were draped in Ukraine flags as the two teams lined up. Manchester City opted for shirts displaying the flag, while the video screens at Goodison had a message: 'Ukraine stay strong'. There were tears from Zinchenko, the emotions overwhelming.
Everton's impressive resolve in vain
Everton were in the mood from the outset, with the crowd up and tackles flying in whenever City's players failed to move the ball quickly enough. The returning Abdoulaye Doucoure, alongside Allan and Donny van de Beek, pressed the champions hard.
There was a standing ovation for Van de Beek when he put in a challenge for which he was booked and again when he raced back to rob Kevin De Bruyne. Richarlison led the line manfully alone, while Anthony Gordon endeared himself with his willing running.
This is the minimum that supporters demand and it earned Lampard's players their standing ovation when the whistle went for half-time with the game goalless. Everton even had the best chance of the opening 45 minutes through Richarlison, while City merely probed.
But after the break, it became tougher as Lampard's side dropped deeper and deeper, the breakaways becoming more infrequent. It required a stunning double save from Jordan Pickford to deny Kevin De Bruyne and Bernardo Silva midway through the half.
The frustration will be that City needed an error to win the game. The ball took not one but two deflections on its way through to Foden. Keane really should have been able to sort out his feet quickly enough to prevent the ball making its way through to the City player.
Should Everton have had a penalty?
There was still time for controversy when Rodri, under little pressure inside the penalty box, misjudged the bouncing ball and it ricocheted off his upper arm. It was desperately close to handball, a similar incident to Craig Dawson's goal for West Ham against Leicester.
The on-field decision not to award the penalty stood with perhaps no clear and obvious evidence that it had struck Rodri's uncovered arm rather than his shirt. Late in the game, it would likely have meant a vital point for Everton and two huge points dropped for City.
Lampard: 'It is incompetence at best'
"I was calm, I was not shouting and ranting at him. I wanted to know if it was offside in the build-up but I have been told it wasn't in the build-up," Lampard told Sky Sports.
"Go to VAR, they have two minutes to look at it and to think they have not given that as a penalty when it strikes him on the arm, in an unnatural position. I have a three-year-old daughter at home who could tell you that was a penalty.
"We are fighting at the bottom of the table and they are fighting at the top. Decisions are crucial. I don't know what has to happen as a reflection of that. A mistake is when you have done something wrong and don't have time to think about it, they had two minutes to digest the handball.
"Even if the VAR says not sure, then go have a look. It is incompetence at best, if not that then someone needs to explain what it is."
What's next?
Everton are back at Goodison Park in FA Cup fifth-round action against Boreham Wood on Thursday. Their next Premier League game is away to Tottenham on Monday Night Football on March 7.
Man City go to Peterborough in the FA Cup on Tuesday evening before hosting Manchester United on Super Sunday on March 6.