Manchester City maintained the pressure on leaders Arsenal as the Premier League champions reduced the gap at the top to two points with a hard-fought victory over struggling Crystal Palace.
Pep Guardiola’s side had to remain patient at Selhurst Park, but were eventually able to take their opportunity to edge closer to the Gunners, who visit London rivals Fulham on Sunday (14:00 GMT).
Erling Haaland settled the match from the penalty spot for his 28th goal of the campaign, stroking his 78th-minute spot-kick into the bottom corner after Michael Olise’s late challenge on Ilkay Gundogan.
The visitors had been unable to capitalise on a purposeful start, which saw Rodri’s first-time effort force Vicente Guaita into action and Jack Grealish pull a low shot wide after he had darted into the penalty area.
Haaland, who scored his first Premier League hat-trick in the reverse fixture in August, went closest in the first half, but the league’s top scorer remarkably failed to hit the target following Nathan Ake’s pass into the six-yard box.
A shot-shy Palace pushed for a late equaliser against a retreating City, but it was to no avail as the hosts went a Premier League record third successive league game without managing a shot on target.
The defeat extends Palace’s concerning league winless run to 10 matches – the longest in the division – and leaves Patrick Vieira’s side just four points above the relegation places.
For City, the victory is a positive note to begin another crucial week – with the second leg of their Champions League last 16 tie against RB Leipzig next before an FA Cup quarter-final against Burnley.
“Of course Arsenal is on an incredible run. Still we are there,” Guardiola told Sky Sports.
“Here in the typical winter game, a difficult one, we were there all the time and then we won it.
“Now we have to do absolutely everything and next Tuesday and Saturday. Hopefully the Etihad can live one of the best nights we have lived and we can do it again.”
- Reaction to Saturday’s Premier League action
- Go straight to all the best Crystal Palace content
- Visit our Manchester City page
City struggle to three points to stay in touch
It is no secret that City have been far from their scintillating best this term – this third successive win equalled their longest winning streak in the league this season.
And yet, ominously for Arsenal, Guardiola’s champions remain within striking distance of a fifth title in six years.
That is despite enduring a frustrating evening in south London, where victory was ultimately delivered by a mistake from Olise, who needlessly felled Gundogan as Palace appeared to be edging towards a valuable point.
The visitors dominated possession, territory and chances, but Palace held firm under periods of intense pressure, with Grealish – playing with increasing swagger as he continues to develop in this City team – proving the key threat as playmaker Kevin de Bruyne watched on from the bench.
Phil Foden was unable to build on his recent return to form, although his final contribution before he was replaced by Julian Alvarez less than 15 minutes into the second half was to go close with a free-kick that Guaita sprung across to save.
Alvarez spurned the chance to make a near-instant impact as he blazed over, but Haaland held his nerve when presented with the chance to break the deadlock and clinch three crucial points.
Vieira, meanwhile, is right to be concerned about his side’s situation, with the Eagles among nine teams in the relegation picture in the final third of the season.
Scoring goals is the obvious issue for Palace. Their wait for a shot on target will now extend to a fourth game after setting a competition record since Opta began recording such data in 2003-04.
They were handed a rare first-half opening when Olise dispossessed Foden in midfield and set Wilfried Zaha away, while substitute Eberechi Eze saw an attempt blocked amid a late search for an equaliser.
Palace’s five points in 2023 is the lowest in the division, and just four points separate Vieira’s misfiring side from the relegation places before difficult trips to Brighton and then Arsenal.
Player of the match
with an average of 7.30
Squad number11Player nameZaha
Squad number16Player nameAndersen
Squad number6Player nameGuéhi
Squad number15Player nameSchlupp
Squad number7Player nameOlise
Squad number17Player nameClyne
Squad number13Player nameGuaita
Squad number8Player nameSambi Lokonga
Squad number3Player nameMitchell
Squad number29Player nameAhamada
Squad number4Player nameMilivojevic
Squad number9Player nameJ Ayew
Squad number10Player nameEze
Squad number22Player nameÉdouard
Squad number2Player nameWard
Squad number10Player nameGrealish
Squad number6Player nameAké
Squad number9Player nameHaaland
Squad number19Player nameÁlvarez
Squad number17Player nameDe Bruyne
Squad number8Player nameGündogan
Squad number16Player nameRodri
Squad number47Player nameFoden
Squad number20Player nameBernardo Silva
Squad number3Player nameRúben Dias
Squad number2Player nameWalker
Squad number5Player nameStones
Squad number25Player nameAkanji
Squad number31Player nameEderson
- 17ClyneSubstituted forWardat 71′minutes
- 16AndersenBooked at 90mins
- 8Sambi Lokonga
- 4MilivojevicBooked at 30minsSubstituted forAhamadaat 61′minutes
- 9J AyewSubstituted forÉdouardat 80′minutes
- 15SchluppSubstituted forEzeat 80′minutes
- 5StonesSubstituted forWalkerat 89′minutes
- 3Rúben DiasBooked at 59mins
- 6AkéBooked at 65mins
- 47FodenSubstituted forÁlvarezat 58′minutes
- 20Bernardo SilvaSubstituted forDe Bruyneat 79′minutes
- 17De Bruyne
Match ends, Crystal Palace 0, Manchester City 1.
Second Half ends, Crystal Palace 0, Manchester City 1.
Joachim Andersen (Crystal Palace) is shown the yellow card for a bad foul.
Kevin De Bruyne (Manchester City) wins a free kick on the left wing.
Foul by Joachim Andersen (Crystal Palace).
Jack Grealish (Manchester City) wins a free kick in the defensive half.
Foul by Naouirou Ahamada (Crystal Palace).
Substitution, Manchester City. Kyle Walker replaces John Stones.
Foul by Nathan Aké (Manchester City).
Michael Olise (Crystal Palace) wins a free kick in the defensive half.
Offside, Crystal Palace. Wilfried Zaha tries a through ball, but Odsonne Édouard is caught offside.
Foul by Julián Álvarez (Manchester City).
Albert Sambi Lokonga (Crystal Palace) wins a free kick in the defensive half.
Corner, Crystal Palace. Conceded by Jack Grealish.
Attempt blocked. Eberechi Eze (Crystal Palace) right footed shot from outside the box is blocked. Assisted by Naouirou Ahamada.
Attempt blocked. Wilfried Zaha (Crystal Palace) right footed shot from the left side of the box is blocked. Assisted by Michael Olise with a cross.
Foul by Ilkay Gündogan (Manchester City).
Michael Olise (Crystal Palace) wins a free kick in the attacking half.
Attempt missed. Erling Haaland (Manchester City) header from the centre of the box is too high. Assisted by Jack Grealish with a cross.
Foul by John Stones (Manchester City).
- Our coverage of your Premier League club is bigger and better than ever before – here’s everything you need to know to make sure you never miss a moment