Lukaku’s goal came just two minutes after Jesus Navas had brought Man City level following Ramiro Funes Mori’s opener in the first half.
The result is no more than Everton deserved after a much-improved display than in recent weeks.
The Toffees controlled most of the game bar the opening 20 minutes, restricting Man City’s glittering array of attacking stars to only a handful of opportunities.
The tone was set in the opening exchanges by the excellent Mo Besic, who put in two crunching tackles on David Silva and Yaya Toure.
The Bosnian impressed from the bench against Tottenham last Sunday and continued that momentum from the start here, providing a defensive shield alongside Gareth Barry while also linking up with the attacking players at the other end of the field.
His highlight in the opening 45 was a magnificent last-ditch tackle on Toure, an incident that fired up the crowd and began to tilt the game in Everton’s favour.
Chances were still at a premium, though Everton did have two goals correctly disallowed for offside.
The Toffees did get the lead they deserved just before half-time. City could only clear a corner as far as Ross Barkley, whose effort was parried by Willy Caballero into the path of a gleeful Funes Mori who slotted home from close range.
Everton began the second half brightly and had a chance to double their advantage but Lukaku couldn’t quite stretch and get his boot onto the end of Barkley’s low cross.
Barkley then had a shot of his own when he broke clear down the left but his effort from a tight angle was well parried away by Caballero.
Man City’s first real chance of the game came on the hour mark when Sergio Aguero fired wide when well placed inside the area.
Kevin de Bruyne’s effort was then well turned away by goalkeeper Joel Robles as City finally showed some attacking intent.
Everton regained control though and were pushing for a second before being stunned on the counter attack.
City cleared an Everton corner towards Aguero on the halfway line, the Argentine’s wonderful control allowing him to set up the onrushing Navas, who slotted home his first goal in 66 matches. Yes, that’s right, 66 matches.
Thankfully Roberto Martinez’s side responded straight away when Barry’s excellent cross from the left was nodded home by Lukaku for his 19th goal of the season.
The Belgian later limped off with an ankle knock while Seamus Coleman was also forced off, meaning Everton had to finish the game with 10 men after making all three substitutions.
Thankfully they saw the game out and now take a precious – if narrow – lead to the Etihad Stadium in three week’s time.