Manager Pep Guardiola may have claimed City are not yet be ready to win the competition in the build-up to the game in Kharkiv, but they underlined their status as favourites with an outstanding performance.
David Silva twice hit the woodwork before rewarding the visitors for their early dominance with the opening goal after half-an-hour and Aymeric Laporte quickly added a second. Bernardo Silva came off the bench to wrap up a victory that took City to the top of Group F 19 minutes from time.
City were beaten on their last visit to the Metalist Stadium but there never seemed any danger of a repeat and one statistic emphasised their dominance as they recorded 24 shots.
They looked comfortable from the first whistle as they calmly stroked the ball about for almost three minutes before creating a chance for David Silva, which the Spaniard hooked on to the bar.
Goalkeeper Andriy Pyatov always seemed confident the looping effort was missing, but it was an early statement of City’s intent.
Kevin De Bruyne, making his first start of the season, had a shot blocked and Gabriel Jesus, preferred up front to Sergio Aguero, was almost played in by David Silva.
Riyad Mahrez spurned a great chance when Raheem Sterling, back in the side after sitting out Saturday’s defeat of Burnley, found him on a quick counter-attack, but the Algerian delayed and missed the target.
Mahrez then forced a save from Pyatov before curling in a fine cross from which David Silva hit a post. Jesus blasted the rebound wide and Sterling also missed but the opener eventually came.
David Silva finished clinically with a superb low volley after a Jesus shot was deflected into his path.
City wanted more and Benjamin Mendy forced Pyatov to save with a spectacular effort from distance.
Their second came from the resulting corner as Shakhtar left Laporte unmarked and the Frenchman calmly guided De Bruyne’s corner into the top corner.
Despite his side’s dominance, Guardiola did show his frustration when his side lost possession a few times. That occasionally allowed the hosts to break, but City recovered with John Stones, again playing right-back, particularly impressive at the back.
Shakhtar did get one good opening from a corner, but Mykola Matviyenko headed wide, while Laporte blocked another effort from Maycon.
Silva and Mahrez both missed opportunities to extend City’s lead early in the second half and Jesus also dragged a shot wide. Shakhtar did come into the game more, but Junior Moraes headed wide from one of their better chances and substitute Alan Patrick also curled a shot outside a post.
Guardiola decided to freshen up his side by sending on Bernardo Silva for De Bruyne and it proved an inspired piece of thinking. Within a minute of coming off the bench, the Portuguese set off on a run from near the halfway line and dribbled to the edge of the box before firing in a low shot shot off the base of a post.
That allowed City to ease off but Ederson stayed alert to deny Fernando a consolation and Sterling almost added another as he thumped a shot against the bar in injury time.