Pep Guardiola's men, who were denied a win by a late Tottenham Hotspur comeback last weekend, started promisingly with Leroy Sane squandering a chance in the opening minutes as he latched ont o Raheem Sterling's cross, but delivered a timid header wide of the mark.
The Eagles, who had won only one of their previous 10 games coming into this tie, managed to get a foothold in the game midway through the half as Christian Benteke had a header saved by Wilfredo Caballero before the Belgian flicked Jordan Mutch's cross just over the bar on 31 minutes.
However, despite the resurgence from the home side, it was the visitors who took the lead two minutes before half time as Gabriel Jesus, on his full debut for City, teed up Sterling who slotted low to Hennessey's left-hand side.
Palace tried to muster a response after the break when Loic Remy - on at half time in place of Benteke - volleyed off target before Delph brought another save out of Hennessey at the other end.
Joe Ledley then tried his luck from distance, but failed to test Caballero as City managed to preserve their slender lead.
Guardiola's side added a second with 20 minutes left after Silva's jinking run and slide-rule pass set up Sane to score his third goal in as many games.