Gian Piero Gasperini's men needed Manchester City to avoid defeat to Dinamo Zagreb and for themselves to beat Shakhtar in Kharkiv, and the Italians did just enough while Pep Guardiola's men gave them a helping hand with a 4-1 victory in Croatia.
With both sides still in with a great chance of progressing, the first half predictably flittered between tense and entrancing, though Shakhtar looked brighter and will have been disappointed not to make the most of their chances.
Realising the onus was on them as the team that started the round bottom, Atalanta stepped things up after the interval and goals from Timothy Castagne and Mario Pasalic either side of Dodo's controversial red card essentially secured the visitors' progress, before Robin Gosens was gifted a late third.
Amid the entertaining early exchanges, Shakhtar thought they had taken a 16th-minute lead when Viktor Kovalenko steered home from the edge of the box after Alan Patrick's shot was blocked, but it was disallowed for an offside against Tete in the build-up.
Tete was involved again soon after, leaving Masiello on his backside and cutting a pass back to Taison, only for Jose Luis Palomino to vitally get in the way of the Brazilian's strike.
Junior Moraes was the next to go close late in the half – his header pushed over by Pierluigi Gollini following yet another fine right-wing delivery courtesy of Tete.
Luis Muriel was lucky to avoid a second yellow card early in the second half, the Colombian cynically tripping Dodo when he looked set to burst into the box.
Atalanta then broke the deadlock in the 66th minute – Castagne bundling in from close range after receiving Alejandro Gomez's pass into the danger zone, the goal standing following a lengthy VAR check against the Argentinian, who timed his run just right.
Dodo was dismissed 11 minutes from time for catching Remo Freuler in the face, and Pasalic completed the scoring just after, diverting Ruslan Malinovskiy's free-kick past Andriy Pyatov.
Taras Stepanenko's woeful backpass in stoppage time compounded Shakhtar's misery, as Gosens pounced to round off the win.