Comprehensive 5-0 winner over Burnley on the weekend, the Premier League champion was just as dominant in Ukraine with two first-half goals key to inflicting Shakhtar's first home defeat to an English side in Europe.
David Silva, who hit the winner against Hoffenheim three weeks ago, broke the deadlock on 30 minutes and was quickly joined on the scoresheet by Aymeric Laporte.
Bernardo Silva added gloss just over a minute after stepping off the bench in the second half as Pep Guardiola's side, who welcomed Kevin De Bruyne into the starting XI for the first time this term, moved top of Group F after Lyon's 3-3 draw with Hoffenheim.
City's finishing initially lacked the conviction to match their dominance as Gabriel Jesus and Riyad Mahrez passed up fine opportunities to open the scoring.
David Silva next saw a cute close-range attempt come back off the post but the midfielder did not have to wait long for his goal, volleying in after Jesus' deflected shot looped up kindly.
Shakhtar's defensive disorganisation was punished a second time five minutes later with an unmarked Laporte gleefully heading home De Bruyne's corner.
Ismaily's desperate sliding intervention denied David Silva a second soon after the restart before the Brazilian left-back drew a rare save from Ederson at the other end.
But any remote threat of a comeback was extinguished when Mahrez teed up Bernardo Silva for a measured bottom-corner finish 20 minutes from time, while the crossbar kept Raheem Sterling from adding further damage in the dying moments.