Match ends, Manchester City 1, Shakhtar Donetsk 1.
Manchester City boss Pep Guardiola says his side can now focus on the Premier League after qualifying for the Champions League last 16 with a group match to spare.
Ilkay Gundogan scored as City drew 1-1 at home against Ukrainian side Shakhtar Donetsk, a result that ensured Guardiola's team would finish top of Group C.
"The target was to qualify and we have done it," said the Spaniard, who won the Champions League twice when in charge of Barcelona.
"This competition in February will be completely different, tougher. We'll see in which conditions we arrive there. This competition is about the details.
"The group stage is always tricky but now we have one competition already done - we play the last game qualified as first in the group - so we can focus on the Premier League until we arrive in the cups."
City, who have won the Premier League in both the last two seasons, are currently third domestically, nine points behind leaders Liverpool.
As they are still in the Carabao Cup, Guardiola's team will be playing nine times between 30 November and 29 December, although they can now rest players for their last Champions League group game, away in Croatia against Dinamo Zagreb on 11 December.
Gundogan gave City the lead after half-time, side-footing home after some fine footwork from Gabriel Jesus gave him the space to finish.
But Shakhtar, who had shipped 12 goals without reply in their past three meetings with City, stayed in the game and substitute Manor Solomon levelled with his first touch when he met Dodo's pull-back from the right.
City, missing record scorer Sergio Aguero with a thigh injury, were not at full flow going forward despite Kevin de Bruyne's energy in midfield and the industry of Jesus in the final third.
The Brazilian striker did not manage a touch inside the Shakhtar area in the first half, and his only efforts at goal were a tame header and a shot that was blocked.
His hard work did create chances for others, however, and, as well as teeing up Gundogan's goal, he set up substitute David Silva for a shot that was cleared off the line.
That was the closest City came to a winner in the final 20 minutes and an unimpressive attacking display petered out completely before the end, with the crowd unable to lift the home side.
City's poor performance in front of goal did not bode well for the next few weeks while Aguero is absent, but they still achieved their twin objectives for the evening, with Atalanta's 2-0 win over Dinamo Zagreb meaning they cannot be caught going into the final round of group fixtures.
City kept quiet without Aguero
What was expected to be a procession against a team City beat 6-0 here 12 months ago, turned into a night of frustration for the hosts and their fans.
De Bruyne did his best to get his team going with some probing runs from midfield and trademark whipped crosses from the right, but his final ball was often blocked and never fell for a team-mate.
There was also no lack of effort from Jesus, who scored a hat-trick when Shakhtar were last at the Etihad, but his work early on was limited to outside the opposition area.
He did make more runs into the area after the break and was unlucky not to get on the end of another fizzing De Bruyne delivery when Shakhtar keeper Andriy Pyatov dived at his feet, but rarely looked like scoring.
Jesus still came away with an assist on his return to the starting line-up, but the 22-year-old has found the net himself only once in his last 10 appearances in all competitions and badly needs a goal.
More gaps at the back after Ederson mistake
City's last Champions League outing, a 1-1 draw with Atalanta earlier this month, was memorable for defender Kyle Walker's cameo between the sticks after Claudio Bravo's red card.
Ederson, who had come off injured early in that game, did his best to inject some early drama this time too, dashing from his line and completely missing the ball out on the left.
Mateus Tete collected it and cut in looking to take advantage, but Fernandinho dashed back to block his goalbound shot.
That was City's first scare down their left but it was not their last - with left-back Angelino defending very narrowly, Shakhtar frequently looked to expose him with Dodo overlapping on the outside.
It was a tactic that almost paid off before the break when Alan Patrick fired wastefully over from a Dodo cross, but Solomon made no mistake when a similar opportunity fell his way.
Man of the match - Kevin de Bruyne (Manchester City)
City extend unbeaten run in group matches - the stats
- Manchester City are now unbeaten in their last 10 group-stage games in the Champions League (won seven, drew three), since losing back-to-back games in September 2018 (including a 2-1 defeat by Shakhtar Donetsk in December 2017).
- Shakhtar Donetsk have drawn three consecutive Champions League games for the very first time.
- Shakhtar Donetsk have gone unbeaten in four consecutive Champions League away games for the first time in their history (won two, drew two).
- Manchester City's Ilkay Gundogan scored his second goal in five appearances in this season's Champions League with both goals coming against Shakhtar Donetsk.
- Shakhtar Donetsk's Manor Solomon has scored in his first two away appearances in the Champions League, coming off the bench to score both times.
City wrap up their campaign in Group C with a trip to Croatia to play Dinamo Zagreb on Wednesday, 11 December (17:55 GMT). They will find out their last-16 opponents five days later when the draw for the knock-out stages is made in Nyon, Switzerland.
Their next test in the Premier League is away at Newcastle on Saturday (12:30).
- 25FernandinhoBooked at 90mins
- 17De BruyneSubstituted forSilvaat 70'minutes
- 16RodriSubstituted forFodenat 76'minutes
- 20Bernardo Silva
- 9Gabriel Jesus
- 98Cordeiro Dos Santos
- 31dos Santos
- 14Cardoso Lemos Martins
- 20KovalenkoSubstituted forMarcos Antônioat 81'minutes
- 15KonoplyankaSubstituted forSolomonat 65'minutes
- 10Júnior MoraesSubstituted forSikanat 90'minutes
- 8Marcos Antônio
- 28Robson Cipriano
- Slavko Vincic
- Shots on Target
Second Half ends, Manchester City 1, Shakhtar Donetsk 1.
Fernandinho (Manchester City) is shown the yellow card for a bad foul.
Foul by Fernandinho (Manchester City).
Mateus Tetê (Shakhtar Donetsk) wins a free kick on the right wing.
Substitution, Shakhtar Donetsk. Danylo Sikan replaces Moraes because of an injury.
Attempt missed. Nicolás Otamendi (Manchester City) left footed shot from outside the box is high and wide to the left. Assisted by Gabriel Jesus.
Attempt missed. Raheem Sterling (Manchester City) right footed shot from the right side of the box is close, but misses to the right. Assisted by Angeliño.
Foul by Ilkay Gündogan (Manchester City).
Marcos Antonio (Shakhtar Donetsk) wins a free kick in the defensive half.
Corner, Manchester City. Conceded by Taras Stepanenko.
Substitution, Shakhtar Donetsk. Marcos Antonio replaces Viktor Kovalenko.
Corner, Manchester City. Conceded by Sergey Krivtsov.
Foul by David Silva (Manchester City).
Viktor Kovalenko (Shakhtar Donetsk) wins a free kick in the defensive half.
Substitution, Manchester City. Phil Foden replaces Rodrigo.
Attempt missed. Mateus Tetê (Shakhtar Donetsk) left footed shot from the right side of the box is high and wide to the left. Assisted by Manor Solomon.
Foul by David Silva (Manchester City).
Alan Patrick (Shakhtar Donetsk) wins a free kick in the defensive half.
Attempt saved. Rodrigo (Manchester City) left footed shot from outside the box is saved in the centre of the goal. Assisted by João Cancelo.