Match ends, Shakhtar Donetsk 0, Manchester City 3.
Manchester City produced a Champions League masterclass to sweep aside Shakhtar Donetsk in Ukraine and go top of Group F.
Two goals in five first-half minutes by captain David Silva and Aymeric Laporte set Pep Guardiola's side on their way in a game they dominated from start to finish.
Former Spain midfielder Silva volleyed the English champions into the lead moments after his flick had come back off a post.
French defender Laporte headed the second after a corner by Kevin de Bruyne, who was making his first start of the season following a knee injury, before substitute Bernardo Silva made it 3-0 with a shot that went in off the post.
City had 14 shots in the first half alone in Kharkiv, Riyad Mahrez seeing an effort cleared off the line by Yaroslav Rakitskiy when the game was goalless.
Raheem Sterling also hit the bar in the dying moments.
City's surprise 2-1 opening home defeat by Lyon on 19 September seems an awfully long time ago.
Having bounced back with a 2-1 win in Germany against Hoffenheim, the prospect of a long trip to face experienced European opponents was a potentially daunting one.
Yet the 600 travelling fans who made the 4,000-mile round trip were rewarded with a stellar performance and a result that took their team four points clear of third spot at the halfway stage of the group campaign.
City had 24 shots in total and at one stage had managed an incredible 98% possession as Shakhtar were beaten at home by an English side in Europe for the first time.
On the eve of this game, Guardiola said his side were "not ready" to win the Champions League. Shakhtar are not genuine European heavyweights but City fans who witnessed this delicious performance might disagree with the Spaniard.
The hosts spent much of the game camped inside their own area as Mahrez, Gabriel Jesus and David Silva peppered Shakhtar's goal with shots.
The only surprise was that it took half an hour for City to break the deadlock, Silva following up his winner against Hoffenheim with an emphatic finish to set his team on their way.
Laporte was unmarked when he made it 2-0 while Shakhtar's defence parted to allow Bernardo Silva to score just 89 seconds after replacing De Bruyne.
On a night packed full of positives for City, De Bruyne marked his return to the starting line-up with an impressive performance.
The Belgium midfielder has endured a frustrating campaign through injury but he made up for lost time with an energetic display.
De Bruyne set the tone for a lively performance by forcing Andriy Pyatov into an early save following a short corner, before providing the assist for Laporte's goal.
With City coasting, Guardiola replaced De Bruyne with Bernardo Silva with around 20 minutes remaining - the Portuguese responding by scoring for the third successive game for club and country.
Manchester City face two Premier League games - including a trip to Wembley to face Tottenham next Monday (22:00 BST) - as well as a Carabao Cup tie before they host Shakhtar in the Champions League (22:00 BST) on 7 November.
Match ends, Shakhtar Donetsk 0, Manchester City 3.
Second Half ends, Shakhtar Donetsk 0, Manchester City 3.
Attempt blocked. Moraes (Shakhtar Donetsk) left footed shot from the centre of the box is blocked.
Nicolás Otamendi (Manchester City) is shown the yellow card for a bad foul.
Foul by Nicolás Otamendi (Manchester City).
Moraes (Shakhtar Donetsk) wins a free kick in the attacking half.
Attempt missed. Ismaily (Shakhtar Donetsk) left footed shot from the left side of the box misses to the left.
Attempt blocked. Ismaily (Shakhtar Donetsk) left footed shot from the left side of the box is blocked. Assisted by Alan Patrick.
Raheem Sterling (Manchester City) hits the bar with a left footed shot from the centre of the box. Assisted by Riyad Mahrez with a through ball.
Delay over. They are ready to continue.
Delay in match Alan Patrick (Shakhtar Donetsk) because of an injury.
Alan Patrick (Shakhtar Donetsk) wins a free kick in the defensive half.
Foul by Benjamin Mendy (Manchester City).
Attempt missed. Phil Foden (Manchester City) left footed shot from the left side of the box is too high. Assisted by Bernardo Silva.
Sergey Krivtsov (Shakhtar Donetsk) is shown the yellow card for a bad foul.
Substitution, Manchester City. Phil Foden replaces Gabriel Jesus.
Foul by Sergey Krivtsov (Shakhtar Donetsk).
Raheem Sterling (Manchester City) wins a free kick in the defensive half.
Attempt saved. Moraes (Shakhtar Donetsk) right footed shot from outside the box is saved in the centre of the goal. Assisted by Sergiy Bolbat.
Substitution, Shakhtar Donetsk. Dentinho replaces Fernando.
Corner, Manchester City. Conceded by Ismaily.
Attempt blocked. Raheem Sterling (Manchester City) right footed shot from the centre of the box is blocked.
Attempt missed. Fernando (Shakhtar Donetsk) left footed shot from the centre of the box is close, but misses the top left corner. Assisted by Sergiy Bolbat with a cross.
Andriy Pyatov (Shakhtar Donetsk) wins a free kick in the defensive half.
Foul by Nicolás Otamendi (Manchester City).
Substitution, Manchester City. Kyle Walker replaces John Stones.
Foul by Ismaily (Shakhtar Donetsk).
Gabriel Jesus (Manchester City) wins a free kick on the right wing.
Foul by Gabriel Jesus (Manchester City).
Yaroslav Rakitskiy (Shakhtar Donetsk) wins a free kick on the left wing.
Delay over. They are ready to continue.
Delay in match Aymeric Laporte (Manchester City) because of an injury.
Attempt missed. Riyad Mahrez (Manchester City) left footed shot from the right side of the box misses to the left. Assisted by Bernardo Silva following a fast break.
Foul by Raheem Sterling (Manchester City).
Moraes (Shakhtar Donetsk) wins a free kick in the attacking half.
Goal! Shakhtar Donetsk 0, Manchester City 3. Bernardo Silva (Manchester City) left footed shot from outside the box to the bottom left corner. Assisted by Riyad Mahrez following a fast break.
Substitution, Shakhtar Donetsk. Sergiy Bolbat replaces Wellington Nem.
Substitution, Manchester City. Bernardo Silva replaces Kevin De Bruyne.
Kevin De Bruyne (Manchester City) wins a free kick in the defensive half.
Foul by Mykola Matvyenko (Shakhtar Donetsk).