Pep Guardiola’s side did everything but score against Palace, with Joao Cancelo and Kevin De Bruyne both hitting the post in either half and Bernardo Silva twice coming within an ace of finding the target.
However, a well-drilled Eagles side managed to soak up all our pressure in what proved an action-packed encounter with both sides ultimately settling for a point in south London.
With manager Pep Guardiola having described City as facing 10 cup finals in our league run-in, many had pin-pointed a Monday night assignment at Selhurst Park as an especially demanding examination.
Under the stewardship of former City midfielder Patrick Vieira, the Eagles have emerged as a real force to be reckoned with in the Premier League this season.
And though the league leaders dominated territory and possession, conjuring up 14 attempts in the first half alone, the hosts proved a potent threat on the break with Olise and Mateta both causing plenty of problems in a frenetic opening period.
However, City did everything but find the target in a dominant first period with the only thing missing being our cutting edge.
We came within a whisker of gaining a 14th minute lead. A neat pass from Bernardo found Kevin De Bruyne on the edge of the box, the Belgian let fly and Palace keeper Vicente Guaita could only fumble the ball which fell invitingly to the onrushing Bernardo five yards out.
Agonisingly though, the Portuguese midfielder ran out of space as he sought to round the keeper and find the target.
John Stones then tried his luck from 25 yards out, seeing a dipping, swerving shot deflected just wide before leading scorer Riyad Mahrez also warmed the Palace keeper’s gloves as he cut inside from the right flank before powering in a low drive.
Guaita then had to be alert to parry away an brilliant instinctive effort from De Bruyne who fired in on goal with the outside of his right foot from an inviting Cancelo assist.
Cancelo then came the closest yet to making the all-important breakthrough, the defender’s powerful dipping long-range effort smacking back off the post before Aymeric Laporte sent the instant rebound over the target as he followed up.
With City enjoying our best period of the game, Guaita was there again to prove a thorn in our side, staying alert to gather an instinctive Mahrez shot after another sweeping move from the champions.
And a frustrating first half ended with the Algerian grazing the Selhurst Park stanchion with another fizzing effort.
The compelling nature of the contest continued after the restart with City probing and seeking to stretch the play but hosts a menace on the counter.
Amazingly the woodwork denied City for a second occasion on 56 minutes as an angled De Bruyne drive ricocheted back off the post before Guaita then deprived Mahrez from the rebound with yet more heroics.
City were within an ace of the all-important breakthrough again as an inviting 70th minute cross from Grealish did find the onrushing Bernardo just two yards out but he could only get the faintest touch on the ball which went behind.
At the other end Stones needed to produce a perfectly timed block to deny substitute Edouard before Ederson was then alert to deny Zaha.
With injury time looming a stunning De Bruyne free-kick found the onrushing Laporte in the heart of the box but the Spaniard’s header was intercepted by Guehi to take the pace off the ball before Gallagher nearly stole the win for the hosts right at the death.
CRYSTAL PALACE: Guaita, Mitchell, Clyne, Andersen, Guehi, Olise (Ayew 64), Schlupp, Kouyate, Gallagher, Zaha, Mateta (Edouard 64).
Subs: Butland, Matthews, Ward, Tomkins, Eze, Benteke, Riedewald.
CITY: Ederson, Walker, Stones, Laporte, Cancelo, Rodrigo, De Bruyne (c), Bernardo, Grealish, Foden, Mahrez
Subs: Steffen, Carson, Ake, Mbete, Fernandinho, Zinchenko, Gundogan, Sterling, Jesus
The spectacular strikes that saw efforts from Joao Cancelo and Kevin De Bruyne both cannon back off the post remarkably meant that City have now hit the woodwork on 19 occasions this season – that’s three times more than any other side.
It’s further evidence of the vibrant attacking threat conjured up by Pep Guardiola’s side.
It also arguably provides further illustration that we have been desperately unlucky not to further extend our goal tally for the season.
Pep Guardiola's reaction
"We played a really good game. We had our chances and we couldn’t convert. Sometimes it happens.
"I thought a lot to make changes, but they were playing good. They all had the ability to score goals. They were playing good.
"There are many games to play still - we have to win a lot of games still. The way we played there are no regrets. We prefer to win of course but it was well played.
"We played to win the game. We created more, conceded few, we played amazing in a difficult stadium. We did a good game."
What it means
The point extends our lead at the top of the Premier League table on Liverpool to four points.
The Anfield side do though have a game in hand and they will travle to Arsenal on Wednesday night.
City return to action on Sunday when we resume our FA Cup campaign with a sixth-round trip to take on Southampton.
Kick-off at St Mary’s Stadium is 3pm.
News about C Palace v Man City
Palace 0-0 City: Extended highlights
Watch extended highlights from City's Premier League trip to Crystal Palace. Watch more
Palace 0-0 City: Brief highlights
Enjoy bite-sized action from our Monday night trip to Selhurst Park. Watch more
Guardiola: 'My players gave everything'
Pep Guardiola says he has no complaints about the result against Crystal Palace. Read more
Pitcam Highlights: Crystal Palace 0-0 City
Relive our closely-fought Premier League clash away to Crystal Palace from a unique angle. Watch more
Bernardo: Title destiny still in City's hands
Bernardo Silva insisted City would take the positives from Monday’s goalless draw at Crystal Palace, pointing out the title is still in our hands. Watch more
Crystal Palace v City: Full-match replay
Watch the entire 90 minutes of Manchester City’s Premier League game against Crystal Palace on CITY+. Watch more