Manchester City booked their place in the Champions League last 16 for a seventh successive season despite a lacklustre 1-1 draw against Shakhtar Donetsk on Tuesday.
Pep Guardiola’s side were well below their best at the Etihad Stadium, but Ilkay Gundogan’s second-half strike put them on course to wrap up first place in Group C with one game to spare.
Although Manor Solomon equalised for Shakhtar, Atalanta’s win over Dinamo Zagreb ensured City can’t be knocked off top spot.
With the group clinched, Guardiola has the bonus of being able to rest players for the trip to Zagreb on December 11.
That is especially important as the Zagreb fixture comes between vital Premier League matches against Manchester United and Arsenal.
While City won’t give up their Premier League title without a fight, Liverpool are in such a strong position that Europe could provide Guardiola’s best hope of a major prize this term.
Guardiola won the Champions League twice as Barcelona boss but the last of those triumphs came in 2011. He hasn’t gone past the quarter-finals with City.
Returning to the knockout stages was a first step toward ending that frustrating streak, but Guardiola will know injury-hit City have plenty of room for improvement.
City made a sloppy start and were almost caught out when a long punt into their half prompted Ederson to rush off his line.
When the City keeper completely missed his attempt to clear, Shakhtar’s Mateus Tete charged into the penalty area, only for Fernandinho to block the shot with a superbly timed last-ditch slide.
Moments later, Ederson made a better dash off his line to clear after another Shakhtar raid threatened to open City up.
City’s limp opening was at least partially due to the absence of the club’s record goalscorer Sergio Aguero, sidelined for several weeks after injuring a thigh in Saturday’s win over Chelsea.
Gabriel Jesus started in place of Aguero, but the Brazilian, who has scored five goals in eight starts this season, was largely anonymous.
Rodri had City’s first sight of goal, but the midfielder’s shot was too close to Shakhtar keeper Andriy Pyatov.
Ponderous for much of the half, City gradually found some rhythm and Nicolas Otamendi’s header from Angelino’s cross forced an agile save from Pyatov, while Gundogan’s deflected effort looped wide.
City have opened talks with Raheem Sterling about a new long-term contract that would reportedly make the 24-year-old one of the highest-paid players in the Premier League.
Sterling’s place among the world’s elite is without question, but this wasn’t the England winger’s best night.
He did perk up to create a chance that Jesus was unable to take early in the second half.
City finally conjured a move befitting their ability, cutting through the Shakhtar defence to take the lead in the 56th minute.
Kevin De Bruyne was the catalyst with a swift surge and pass into Jesus in the Shakhtar area.
Jesus did well to control and poke the ball across to Gundogan. The German midfielder took a touch before slotting into the bottom corner from 10 yards.
Even that wasn’t enough to paper over the cracks for sluggish City and Shakhtar equalised in the 69th minute.
Tete slipped his pass to the overlapping Dodo and his cut-back from the touchline drew a lethargic response from the City defence, allowing substitute Solomon to fire home from close-range only four minutes after coming on.
David Silva almost restored City’s lead seconds later, but the substitute’s shot was cleared off the line by Serhiy Kryvtsov.