Manchester City fought back from a goal down before staving off a late Everton resurgence to move back to the top of the Premier League and stay on course for the Premier League title with a 3-2 victory at Goodison Park.

Ross Barkley’s brilliant early strike had City under pressure at a ground at which they had lost on their last four visits. But Sergio Aguero quickly responded before Edin Dzeko proved struck two goals in a six minute spell either side of half time to put City seemingly on course for the three points. There was a dramatic twist when Romelu Lukaku headed in midway through the second half, but, helped by goalkeeper Joe Hart, City were able to hang on for a precious victory.

After Liverpool’s defeat to Chelsea handed the initiative back to City last week, this fixture always looked likely to provide their toughest hurdle. Without David Silva, who was only fit enough to start on the bench, and with Aguero going off straight after his goal, Manuel Pellegrini’s side showed superb character to leave them with just two more games to negotiate in order to claim the championship, barring an unlikely huge swing in goal difference toward Liverpool.

The defeat ended Everton’s quest for the Champions League that was already unlikely to end in success heading into the final two matches of the season. Still, there was no lack of effort from the home side, especially when trying to fight back late on, despite some in the crowd apparently being of the mind that a defeat for their team would be preferable given the damage it would do to their great rivals’ title hopes. Ultimately, though, three defeats in their last four matches have shown up the lack of strength in depth in Roberto Martinez’s squad in comparison to those sides above them in the table. Missing Gareth Barry, against his parent club, as well as Kevin Mirallas and Sylvain Distin, Everton looked jaded and just short of the quality required.

It started brightly, though, for the home side. Martinez opted for a three-man backline that has worked well for him against City in the past and further forward Everton were finding space between the lines. Despite his tender years, there are few better at finding those pockets of space than Barkley. And that ability helped him to put his side in front in spectacular fashion. From Steven Naismith’s clever pull-back, Barkley curled a wonderfully precise first-time strike over the head of Joe Hart and into the top corner of the net.

Everton’s lead could have been extended, but referee Lee Probert declined a strong appeal for a penalty when Barkley went down under a challenge from Vincent Kompany. It proved a pivotal moment, given what occurred just seconds later. As with Barkley at the other end, it was Yaya Toure’s ability to find space between the lines that was key. The Ivorian’s quick pass onto Aguero saw the City forward breeze away from Antolin Alcaraz before striking a low effort inside the near post that had plenty of power to it but left Tim Howard flatfooted after gambling the wrong way.

It was to be Aguero’s last meaningful contribution, with an apparent groin strain forcing the Argentinean off with an injury not for the first time this season. In some ways, though, the substitution, with Fernadinho replacing Aguero, aided City. It gave them an extra body in midfield to counter Everton’s numbers in the center of the pitch and allowed Toure greater freedom to go forward.

Two minutes before half-time, City crucially went in front. Dzeko might have scored at the first time of asking but took an extra touch and saw his shot blocked by Howard. But James Milner did superbly down the right to put a cross back into the danger zone and Dzeko rose strongly and got enough power to a header from 12 yards out to take it past the dive of Howard.

The American’s opposite number soon made a spectacular save to crucially deny Naismith, and, with the second half still settling down, City extended their lead. This time it was the trickery of Samir Nasri that enabled a cross to be put in and, with Everton’s defenders ball-watching, Dzeko was able to direct the ball into the net from close range.

That looked like being enough, with Everton struggling to create anything of note. But City allowed Leighton Baines too much space to curl in a fine cross from deep and Lukaku, looking just onside, stooped to beat Hart with his head.

The goal rejuvenated the Everton players and their fans and suddenly there was a sense that a pivotal fight back might just be on. Substitute Gerard Deulofeu so nearly produced a most dramatic equalizer after a mesmerizing run, but Hart denied him and kept the championship in his and City’s hands.