The champions were forced to work had for the three points and scored with almost the last act of each half, firstly through Aymeric Laporte and then in the dying embers of the second period through Gabriel Jesus.
It was resilient, professional and a defensively excellent display.
Everton, making five changes from their 3-1 home loss to Wolves at the weekend, started brightly with Theo Walcott and Dominic Calvert-Lewin’s pace causing one or two problems, but it was City who came closest in the opening exchanges when Leroy Sane volleyed a foot wide from the edge of the box after three minutes.
The Blues came close again on 16 minutes when Everton’s Achilles heel – set pieces – was almost exploited as Aymeric Laporte rose unchallenged from Ilkay Gundogan’s corner but headed just past the post with Jordan Pickford rooted to his line.
Three minutes after, City came even closer after a smart exchange of passes between Sane and David Silva saw the Spaniard cross low but, Gundogan’s effort struck the crossbar.
It seemed just a matter of time before the breakthrough would come.
But the Toffees dug in and came close themselves on the half-hour mark as Walcott’s cross was headed just wide by Bernard with Ederson beaten.
It was a timely reminder that the hosts, despite a poor run of form, are a decent outfit.
As half-time approached, the Blues launched one last attack and Fernandinho was fouled on the left of the Toffees’ box by Idrissa Gueye.
It was a chance again to test Everton’s soft centre from dead-ball situations and as Silva whipped in the free-kick, Laporte towered unchallenged to power the ball past Pickford with virtually the last meaningful act of the half.
What a time to score.
The champions hadn’t been at their very best, but now had a lead to defend and, hopefully build upon.
However, given three of our four losses this season had come from winning positions, there was still plenty of hard work to do.
Everton enjoyed the lion's share of possession shortly after the restart and it was almost 15 minutes before the Blues next threatened - and it could and should have resulted in a second goal.
Bernardo played a pass to the overlapping Gundogan and the German's cross was punched high in the air by Pickford and Sergio Aguero's overhead kick went just wide with the goal at his mercy.
Raheem Sterling replaced Sane on the hour-mark and it was the England winger came close to doubling the champions' lead on 68 minutes as he had a couple of efforts, the second of which was deflected just over.
With the game opening up, a second goal was needed to seal a game that was still on a knife-edge.
With the Blues tiring and the Toffees making three attacking subs, it made for a nail-biting finish - particularly when an otherwise-impressive Kyle Walker gave possession away and Ederson had to be quick off his line to deny Sigurdsson.
Even when the clock ticked past the 90 minutes mark, a further seven were added for various injuries and stoppages.
But City's game-management was superb, restricting the hosts to very little of the ball with the ever superb Bernardo Silva working tirelessly on the right flank throughout.
And, with virtually the last kick of the game, sub Kevin De Bruyne collected the ball, drove infield and slid a pass to fellow sub Gabriel Jesus whose shot was saved, but the Brazilian was first to the ball as it looped up and headed home to send the travelling support wild.
A solid, professional display and another difficult hurdle overcome.
What it means…
City go top of the Premier League for the first time in two months.
The Blues are on level points with Liverpool, having played one game more but with a better goal difference.
Star man: Aymeric Laporte
Solid and dependable, the French defender was playing out of position but never gave Theo Walcott a sniff - and of course, his towering header was essentially the match-winning goal.
“Goodison Park is always tough, but we didn’t concede one shot on target
“It was a good game and to score in the last minute of the first half helped us a lot.
“In the second half they pushed more, and they made it more difficult for us, but we did it.
“We are not the tallest team and Mikael works a lot at set pieces and we scored from the corner.
“The last game Sergio scored three goals and before that Gabriel seven or eight in short time so we have two incredible strikers.
“In general, I am so satisfied.
“The last three months ever three days it is game, game, game…
“Now we have an incredible test next Sunday without much time to prepare and then the Champions League starts again. It’s not stop.”
City host Chelsea on Sunday to complete a triple bill of difficult Premier League fixtures this week.