The Serie A champions will enter the round of 16 draw as group winners after a narrow victory in Ukraine which saw them leapfrog their hosts in the standings
Needing only a point to qualify for the round of 16, an own goal from Olexandr Kucher shortly before the hour mark sent the Bianconeri to victory, leap-frogging the Ukrainians who were forced to settle for second place, with champions Chelsea dropping into the Europa League despite their victory over FC Nordsjaelland.
Paul Pogba was handed a start in midfield for the visitors, with Sebastian Giovinco and Mirko Vucinic tasked with leading the charge up front. Shakhtar named a strong team despite already sealing qualification, but Luiz Adriano was banned after his controversial goal during the game against Nordsjaelland.
The match took some time to get going, with the first sniff of an opportunity falling Juve’s way when Giovinco clipped a pass through to Vucinic, whose first-time volley from an angle was sent into orbit.
The pair would combine again, this time Vucinic playing the role of provider after holding off multiple Shakhtar defenders and teeing up Giovinco at the edge of the box for a shot that crept just wide of the post.
Neither side seemed in any hurry to commit great numbers forward, though Juve did manage a late flurry to end the first half. Stephan Lichtsteiner’s volleyed cross had to be cleared expertly by Darijo Srna, before a swerving drive from Giovinco from 30 yards out forced Andriy Pyatov into a difficult save.
The pattern changed completely in the second half. Shortly after the restart, Gianluigi Buffon was forced to punch a dangerous free kick back into his own area, where Alex Texiera connected, but his effort went over the bar.
Moments later, Andrea Pirlo had a great chance after evading his marker at the edge of the box, but his shot clipped the post on its way out. Shakhtar countered almost immediately and Henrik Mkhitaryan was released on goal, but he too failed to find the target when in range.
The breakthrough was coming, though, and it went Juve’s way. A low, hard cross from Lichtsteiner was contested by Giovinco and Kucher, with the Shakhtar man’s final touch leading the ball over the goal-line.
Shakhtar nearly got back into the match with 20 minutes remaining, as Razvan Rat's telling cross was deflected onto the post after a messy scramble in the box. Not long after, a Juve counterattack saw Vucinic round Pyatov, but the visitors were able to get men back to take the sting out of the attack, with Pogba eventually firing wide.
With time trickling away, Shakhtar seemed to accept their fate, and failed to really test Buffon in the closing stages as Juve finished in control of the match and the group.