Goals from Andriy Shevchenko and Oleh Gusev gave Dynamo Kiev a significant lead to take to Manchester after the Europa League last-16 first leg.
Former Chelsea and AC Milan striker Shevchenko was lively throughout and opened the scoring when he bundled in Andriy Yarmolenko's 25th-minute cross.
David Silva had City's best chance but could not direct Pablo Zabaleta's scuffed cross towards goal.
Gusev rifled Artem Milevskiy's flick-on into the corner to cap a fine display.
City are still battling on three fronts this season with Champions League qualification a priority in the Premier League, while Roberto Mancini's side face Reading in the FA Cup sixth round on Sunday.
But on this display they will struggle to keep their Europa League hopes alive.
With temperatures dipping below minus-four degrees at the Valeriy Lobanovskiy Stadium, conditions under foot were tricky.
Unsurprisingly, it was the home side who looked far more at ease with the frozen pitch but City did produce two chances early on which suggested they might enjoy their evening in the Ukrainian capital.
First, Silva split the Dynamo defence with an incisive through-ball but Micah Richards could not get to the ball ahead of goalkeeper Oleksandr Shovkovskiy.
City's second chance after 21 minutes was the first on target by either side, but Aleksandar Kolarov's powerful volley from 18 yards went straight into the arms of Shovkovskiy.
But once in their stride, the Ukrainian outfit's front quartet of Shevchenko, Yarmolenko, Milevskiy and Roman Eremenko showed energy, intelligent movement and neat interplay which City found hard to suppress.
The Eastlands outfit had won four of their past five games but having left their own irrepressible energy source, 21-goal top scorer Carlos Tevez, on the bench for this clash, they lacked tempo and struggled for ideas up front.
Mancini started the game with Edin Dzeko up front. The Bosnian had scored two against Aris Salonika in the second leg of the previous round, but service to the £27m former Wolfsburg man was limited.
Manchester City have been given a lesson on how to play two-legged European football
Danny Mills Former Man City defender and 5 live summariser
Shevchenko opened the scoring when he darted to the front post unmarked and poked Yarmolenko's cross beyond Joe Hart to record a 67th goal in European competition.
The impressive Shevchenko then blasted over the bar from 20 yards as Dynamo continued to dominate and he could have had a penalty moments later but chose not to go down when tripped by Vincent Kompany in the box.
The second half kicked off without the enigmatic Mario Balotelli on the field. The Italian had not been substituted and eventually came down the tunnel and out on to the pitch a minute later to join the game.
But with the striker clearly struggling with some sort of injury as he continually pointed to his face, he was eventually replaced by Carlos Tevez.
The introduction of Tevez immediately sparked City to life as Yaya Toure's low shot from 20 yards was saved well by Shovkovskiy.
The score should have been level when Zabaleta's scuffed shot bobbled across the edge of the six-yard box but it caught Silva by surprise and the Spaniard shot wide from close range.
Dynamo, who are unbeaten since November and have not lost a European game at home since December 2009, rode out the City storm.
It was a frustrating afternoon for Edin Dzeko and his changing team-mates
And the home side doubled the lead when Gusev charged past Richards in the box and volleyed into the top corner after latching on to Milevskiy's flick.
Dynamo had beaten Turkish side Besiktas 8-1 on aggregate in the last round and with City's discipline and shape in disarray, they looked likely to add another.
Hart saved low from Gusev as the forward almost wrapped up the tie from close range.
City have a huge task on 17 March. Acting as summariser on BBC Radio 5 live, their former defender Danny Mills said: "Manchester City have been given a lesson on how to play two-legged European football.
"But at 2-0 they are still in with a decent chance of going through and can possibly turn this around at Eastlands."
90:00+3:08 The referee blows his whistle to end the game.
90:00+1:35 Milos Ninkovic takes a shot. Joe Hart makes a save.
89:11 Short corner worked by Oleg Gusev.
88:37 Oleg Gusev takes a shot. Save made by Joe Hart.
88:09 Free kick awarded for a foul by Roman Eremenko on Shaun Wright-Phillips. Shaun Wright-Phillips takes the free kick.
87:04 Yevhen Khacheridi restarts play with the free kick.
87:04 Substitution (Dynamo Kiev) makes a substitution, with Milos Ninkovic coming on for Andriy Shevchenko.
87:04 Unfair challenge on Aparecido Danilo Silva by Pablo Zabaleta results in a free kick.
86:51 David Silva takes a shot. Blocked by Yevhen Khacheridi.
84:16 Foul by Gareth Barry on Artem Milevskiy, free kick awarded. Ayiila Yussuf takes the free kick.
83:45 Oleg Gusev takes a shot. Save by Joe Hart.
82:11 Goran Popov gives away a free kick for an unfair challenge on Micah Richards. Free kick taken by Gnegneri Toure Yaya.
81:18 Direct free kick taken by Gnegneri Toure Yaya.
81:18 Substitution Shaun Wright-Phillips joins the action as a substitute, replacing Aleksandar Kolarov.
81:18 Booking Ayiila Yussuf is cautioned by the ref for unsporting behaviour.
81:15 Ayiila Yussuf challenges Edin Dzeko unfairly and gives away a free kick.
80:45 Carlos Tevez gives away a free kick for an unfair challenge on Goran Popov. Roman Eremenko takes the free kick.
80:17 Free kick awarded for an unfair challenge on Aparecido Danilo Silva by Gareth Barry. Aparecido Danilo Silva restarts play
with the free kick.
78:58 Carlos Tevez takes a shot. Save by Olexandr Shovkovskiy.
78:38 Booking The referee books Carlos Tevez for dissent.
78:05 Carlos Tevez produces a cross, blocked by Ayiila Yussuf.
76:25 Artem Milevskiy provided the assist for the goal.
76:25 GOAL - Oleg Gusev:Dynamo Kiev 2 - 0 Man City Oleg Gusev gets on the score sheet with a goal from inside the box to the top right corner of the goal. Dynamo Kiev 2-0 Man
75:39 David Silva is caught offside. Olexandr Shovkovskiy takes the free kick.
74:16 Edin Dzeko is caught offside. Olexandr Shovkovskiy restarts play with the free kick.
73:03 Aleksandar Kolarov is flagged offside by the assistant referee. Olexandr Shovkovskiy restarts play with the free kick.
71:48 Foul by Oleg Gusev on Gnegneri Toure Yaya, free kick awarded. Gnegneri Toure Yaya restarts play with the free kick.
70:33 Pablo Zabaleta sends in a cross, Close range effort by David Silva goes wide of the right-hand upright.
69:14 Micah Richards challenges Andriy Yarmolenko unfairly and gives away a free kick. Direct free kick taken by Oleg Gusev. Oleg
Gusev sends in a cross, save by Joe Hart.
67:42 Joleon Lescott takes a shot. Save by Olexandr Shovkovskiy.
67:23 Aleksandar Kolarov takes the outswinging corner, clearance made by Artem Milevskiy.
63:51 Gareth Barry fouled by Andriy Yarmolenko, the ref awards a free kick. Micah Richards restarts play with the free kick.
61:48 Artem Milevskiy takes a shot. Save by Joe Hart.
59:15 Pablo Zabaleta concedes a free kick for a foul on Andriy Shevchenko. Aparecido Danilo Silva takes the free kick.
59:01 Aleksandar Kolarov takes a outswinging corner from the left by-line to the near post.
58:33 Gnegneri Toure Yaya takes a shot. Save made by Olexandr Shovkovskiy.
58:15 Free kick awarded for a foul by Micah Richards on Ayiila Yussuf. Ayiila Yussuf takes the free kick.
56:17 Free kick taken by Aleksandar Kolarov.
56:17 Substitution Carlos Tevez on for Mario Balotelli.
56:17 Andriy Shevchenko challenges Aleksandar Kolarov unfairly and gives away a free kick.
52:40 Olexandr Shovkovskiy takes the free kick.
52:40 Booking Mario Balotelli is cautioned.
52:32 Mario Balotelli concedes a free kick for a foul on Ayiila Yussuf.
50:11 Centre by David Silva, Yevhen Khacheridi manages to make a clearance. Mario Balotelli takes the outswinging corner, clearance
by Ayiila Yussuf.
48:50 Shot from just outside the box by Andriy Shevchenko goes over the target.
45:01 The game restarts for the second half.
45:00+1:27 The ref blows to signal half-time.
45:00+1:15 Artem Milevskiy produces a right-footed shot from just outside the box that goes wide right of the goal.
45:00+0:26 Oleg Gusev has an effort at goal from the edge of the area that misses to the right of the target.
44:26 Andriy Yarmolenko fouled by Pablo Zabaleta, the ref awards a free kick. Oleg Gusev takes the direct free kick.
43:08 Unfair challenge on Mario Balotelli by Ognjen Vukojevic results in a free kick. The free kick is swung in left-footed by Aleksandar
Kolarov, clearance by Ognjen Vukojevic.
42:19 The ball is delivered by David Silva.
41:30 Aleksandar Kolarov challenges Artem Milevskiy unfairly and gives away a free kick. Direct free kick taken by Aparecido Danilo
40:25 Artem Milevskiy concedes a free kick for a foul on Pablo Zabaleta. Free kick taken by Joleon Lescott.
39:52 Andriy Shevchenko challenges Aleksandar Kolarov unfairly and gives away a free kick. Joe Hart takes the free kick.
38:59 Short corner worked by Andriy Yarmolenko. Effort on goal by Andriy Shevchenko from just inside the penalty area goes over
32:45 Unfair challenge on Ayiila Yussuf by Micah Richards results in a free kick. Goran Popov takes the free kick.
32:03 Corner from right by-line taken by Mario Balotelli.
31:40 Ognjen Vukojevic is penalised for handball and concedes a free kick. Free kick taken by Gareth Barry.
30:51 Outswinging corner taken by Aleksandar Kolarov from the left by-line, Ognjen Vukojevic makes a clearance.
28:54 Mario Balotelli gives away a free kick for an unfair challenge on Yevhen Khacheridi. Free kick taken by Aparecido Danilo Silva.
28:09 Unfair challenge on Mario Balotelli by Aparecido Danilo Silva results in a free kick. Gnegneri Toure Yaya restarts play with
the free kick. The ball is delivered by David Silva, Yevhen Khacheridi manages to make a clearance.
26:27 Ognjen Vukojevic challenges Edin Dzeko unfairly and gives away a free kick. Mario Balotelli fires a strike on goal direct
from the free kick, blocked by Ognjen Vukojevic.
24:07 The assist for the goal came from Andriy Yarmolenko.
24:07 GOAL - Andriy Shevchenko:Dynamo Kiev 1 - 0 Man City Andriy Shevchenko fires in a goal from close range to the top left corner of the goal. Dynamo Kiev 1-0 Man City.
23:52 Oleg Gusev takes a shot. Vincent Kompany gets a block in.
23:13 The offside flag is raised against Andriy Shevchenko. Free kick taken by Vincent Kompany.
22:50 Micah Richards gives away a free kick for an unfair challenge on Artem Milevskiy. Direct free kick taken by Goran Popov.
21:11 Aleksandar Kolarov takes a shot. Olexandr Shovkovskiy makes a save.
18:00 Goran Popov gives away a free kick for an unfair challenge on David Silva. Aleksandar Kolarov has a direct shot on goal from
the free kick, comfortable save by Olexandr Shovkovskiy.
13:20 Mario Balotelli concedes a free kick for a foul on Oleg Gusev. Oleg Gusev restarts play with the free kick.
11:24 Unfair challenge on Mario Balotelli by Aparecido Danilo Silva results in a free kick. Free kick taken by Aleksandar Kolarov.
7:24 Aleksandar Kolarov concedes a free kick for a foul on Oleg Gusev. Direct free kick taken by Aparecido Danilo Silva.
5:43 The assistant referee signals for offside against Artem Milevskiy. Indirect free kick taken by Gnegneri Toure Yaya.
5:15 The official flags Micah Richards offside. Olexandr Shovkovskiy takes the indirect free kick.
3:56 The ball is delivered by Andriy Shevchenko.
3:05 Centre by Aleksandar Kolarov, Goran Popov manages to make a clearance.
2:17 Shot from outside the area by Andriy Yarmolenko misses to the left of the target.
1:07 Outswinging corner taken left-footed by Aleksandar Kolarov, Effort from deep inside the area by Mario Balotelli clears the
0:00 The ref blows the whistle to start the match.
Live text and data provided by The Press Association.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.