Everton were neck and neck with Manchester City for a large part of this contest, behind for only five minutes in the opening half.
Richarlison touched in Everton’s equaliser after Lucas Digne’s shot clattered into the post to cancel out Phil Foden’s deflected opener.
When Riyad Mahrez restored City's lead 18 minutes after half-time, though, Carlo Ancelotti’s side were unable to draw level a second time.
They remained firmly in the game, manager Ancelotti making changes of personnel and formation in a bid to find a way back.
Ultimately, though, Bernardo Silva’s goal with 13 minutes remaining left Everton with too much to do.
City conceded only twice in their 11 straight Premier League victories prior to this match – and only six times in 23 unbeaten games ahead of coming to Goodison Park.
Everton produced a performance high on endeavour and character, nonetheless, running themselves to a standstill in an effort to take something from the league leaders.
They remain seventh in the Premier League table, needing to win their game in hand to move within two points of the top four.
Both teams profited from slices of fortune to score their goals before half-time.
In each instance, however, the good luck was earned by the football preceding it.
Everton’s opportunities to attack had been limited in an opening half hour when City enjoyed an awful lot of the ball.
Going behind, however, seemed to release the hosts’ shackles.
Alex Iwobi began getting into the game on Everton’s right, one cross directly after Foden’s goal missing its intended target – but the intent shown by three home players bursting into the box was encouraging.
Ruben Dias intervened to take Iwobi’s next delivery off the head of Richarlison.
It was a terrific ball from the forward but next time round he decided on a different route.
Everton recycled play following Dias’ clearance, eventually locating Iwobi on the right.
Seamus Coleman sped ahead of Iwobi to receive a subtle pass in space. The right-back stood up his cross, marginally clearing a frustrated Abdoulaye Doucoure, whose mood brightened on turning to see Digne poised to connect.
The Frenchman caught his effort sweetly, aimed across goalkeeper Ederson and slamming into the post.
This was where Everton got their break, Richarlison taking up a good position but with no chance to react to the rebound.
Instead, he saw it crash into his thigh and redirect into the net.
The Brazilian has slogged his guts out this season without necessarily gaining the rewards his endeavours deserved.
You gladly take these ones, then, and it was a ninth goal of the season for the 23-year-old.
Everton spent a lot of the game’s opening stages deep in their own half.
Doucoure barely let Foden out of his sight and Gylfi Sigurdsson repeatedly sank deep to stiffen Everton’s midfield.
Still, City circulated the ball quickly and precisely – albeit Michael Keane and Yerry Mina, before he was forced off injured and replaced by Coleman on 18 minutes, had to head a lot of balls.
Pep Guardiola’s team weren’t flawless, Aymeric Laporte and Gabriel Jesus cheaply surrendering possession in quick succession to their manager’s evident chagrin.
There was a miskick in the box from Laporte, too, offering encouragement to Everton.
Jordan Pickford, back in Everton’s goal after sitting out four matches with an abdominal problem, saved Joao Cancelo’s awkwardly bouncing effort inside two minutes.
But for all their possession, City weren’t creating a mountain of openings.
Jesus toed over under pressure from Keane after escaping through the middle and Keane did very well to leap and intercept Mahrez’s cross, with Jesus waiting to pounce.
Everton’s relief was short-lived. The corner was ultimately worked to Mahrez on Everton’s left. Same again from the winger, manoeuvring the ball onto his left foot for an inswinging delivery.
Keane’s clearance fell kindly for Foden. He returned a shot which Pickford had covered until a ricochet off the inside of Coleman’s right boot carried the ball in the opposite direction to the helpless keeper’s dive.
The best of Everton’s attacking until then had come through the excellent Doucoure, sliding a pass which Sigurdsson helped on for Digne and continuing his run into the box.
Digne’s deep cross connected with Doucoure but Laporte intercepted the delicate volleyed touch intended for Richarlison.
Everton summoned a more concerted period of pressure to secure their equaliser, City’s riposte coming through Foden, watching a dropping ball onto his left boot and forcing Pickford to save low to his right.
Pickford was rapidly down to his opposite side to beat out a Silva effort six minutes after the restart.
Four minutes later, a very presentable opportunity for Jesus, a pain in the neck for Everton in recent contests.
Kyle Walker picked out the Brazilian on the left of Everton’s penalty area. Jesus had time to size up his strike but rifled high and wide of the near post.
Rodri instinctively flung his hands to his face after heading wide from a Foden corner, then Pickford punched a ball off the advancing Silva’s head from Rodri’s through ball.
The dam burst on 63 minutes.
Mahrez moved infield as Silva collected a pass from Walker.
The Algerian was right of centre when he received possession, with Tom Davies gamely trying to make up ground between Silva and Mahrez.
Aware of incoming pressure, Mahrez promptly got his shot away, curled beyond Pickford and in off the far post.
Ancelotti is not a manager who lets things drift and only six more minutes elapse before a change in personal and formation.
Joshua King and James Rodriguez replaced Iwobi and Davies.
Coleman moved up to right midfield where he excelled against Tottenham Hotspur seven days ago, King played on the left and James filled the position behind Richarlison.
Chasing a game against Manchester City comes with inevitable risk attached, nonetheless.
And with gaps opening, as Everton committed more numbers to attack, City pounced.
Jesus skilfully bounced Mahrez’s pass from the right touchline into the path of Silva, who opened up for a strike inside Pickford’s right post.
Laporte defended strongly at the back post to stop King’s left-wing cross reaching Coleman – Doucoure frustrated with himself when he couldn’t gather the loose ball.
And with that half-chance minutes from the end, Everton's race was run.