Manchester City progressed to the last 16 of the Champions League for a seventh season running despite playing out a 1-1 home draw with Shakhtar Donetsk on Tuesday.
In the absence of injured club-record goalscorer Sergio Aguero, Pep Guardiola's men produced a flat display that saw them fail to get out of first gear for large parts.
Even after edging in front 11 minutes into the second period through Ilkay Gundogan, City - saved by a brilliant Fernandinho goal-line clearance in the opening period - could not kick on.
Substitute Manor Solomon hit back for Shakhtar with just over 20 minutes remaining to make it back-to-back Group C draws for City, though top spot was secured thanks to Dinamo Zagreb's defeat at Atalanta.
City survived a huge scare early on when Ederson miscued an attempted clearance after racing out of his box, but Fernandinho got back to block Tete's shot on the line.
Another simple ball in behind caught out the hosts with almost half an hour played, only for Alan Patrick to fire over when picked out by Moraes on the edge of the area.
Shakhtar were made to pay for those missed chances early in the second half as Gabriel Jesus rolled his marker and laid the ball off for Gundogan to poke into the bottom-left corner.
But Luis Castro's side levelled through Solomon, the substitute tucking Dodo's cutback away from Ederson just four minutes after being introduced from the bench.
Fellow substitute David Silva came close to snatching a winner when his shot hit Sergey Krivtsov and then Andriy Pyatov before being hacked clear, but there was to be no way through for City.
What does it mean? Job done for underwhelming City
A point was all that was needed for City, meaning it was ultimately job done, but Guardiola will not be overly pleased with his side's lacklustre display on home soil.
It ends a run of six successive home wins in the competition, and familiar opponents Shakhtar were good value for their point which, coupled with Atalanta's 2-0 win over Dinamo Zagreb, places the Ukrainian club second in Group C with one game to play.
Jesus shows promise in Aguero absence
Guardiola confirmed on Monday that Aguero is to miss "a few games" with a thigh injury sustained against Chelsea at the weekend.
Jesus is the obvious choice to directly fill that massive void and, despite not getting on the scoresheet himself, he created Gundogan's goal with some smart play inside the box - one of four key passes completed, twice the amount of any other player on the field.
Angelino caught out
Angelino was given his first Champions League appearance of the season but looked incredibly shaky at the back, regularly caught out by straight balls over the top.
The 22-year-old featured prominently in the group stage of the competition with PSV last season, but it is clear he needs to improve if he is to become a regular for City.
Key Opta Facts
- Manchester City are now unbeaten in their past 10 group-stage games in the Champions League (W7 D3) since losing back-to-back games in September 2018 (including a 2-1 defeat to Shakhtar Donetsk in December 2017).
- Shakhtar have gone unbeaten in four consecutive Champions League away games for the first time in their history (W2 D2).
- Ilkay Gundogan scored his second goal in five appearances in this season's Champions League, with both goals coming against Shakhtar.
City travel to Newcastle United on their return to Premier League action on Saturday, while Shakhtar continue their own domestic title defence away at Mariupol the following day.