City (10 points) lead Shakhtar and Dinamo by five points with two group matches remaining while Atalanta are bottom on one.
Tottenham put their poor domestic form behind them by recording an impressive 4-0 win over Red Star in Belgrade.
Three days after leaving the field in tears over his role in an opponent’s injury, Son Heung-min scored twice while Giovani Lo Celso and Christian Eriksen also found the net.
Earlier in group B, Bayern Munich bounced back from their 5-1 drubbing to Eintracht Frankfurt at the weekend in the Bundesliga, beating Olympiakos 2-0.
In the club’s first game since coach Niko Kovac was fired, striker Robert Lewandowski and substitute Ivan Persisic got the crucial goals in Germany.
The Bavarian giants have a maximum 12 points and are assured of finishing in the top two with two games to spare. Tottenham (seven) have opened up a four-point gap on Red Star Belgrade while Olympiakos (one) are last.
In Moscow, Douglas Costa scored in stoppage time to send Juventus through to the next phase.
The former Bayern winger finished calmly following a stunning solo run while Aaron Ramsey got the visitors on their way against Lokomotiv.
Juve move on with 10 points in group D, but Atletico Madrid (seven) missed the chance to join them by losing 2-1 at Bayer Leverkusen (three). The Germans and Russians (three) can both still progress.
Paris Saint-Germain followed Bayern and Juve in booking their spots in the knock-out stage.
Mauro Icardi scored on 22 minutes and goalkeeper Keylor Navas saved a penalty as PSG edged Club Brugge 1-0 in the French capital.
The result saw them through from group A where they have a maximum 12 points, five clear of Real Madrid who thrashed Galatasaray 6-0 in Spain.
Brazilian teenager Rodrygo scored a hat-trick, Karim Benzema a brace, and a Sergio Ramos penalty saw off the Turks. Madrid, the 13-time champions, are five points clear of third-place Brugge (two), while Galatasaray are fourth on one point.