Olexander Kucher inadvertently turned Stephan Lichtsteiner's cross into his own net in the 56th minute, seeing Juve leapfrog Shakhtar at the top and rendering Chelsea's 6-1 thrashing of FC Nordsjaelland meaningless.
Both teams struck the post but Juventus could just about claim to be worthy winners as they had the better of the chances and ensured most of the game was played in Shakhtar territory.
Juventus started strongly, and produced all of the good chances in the first half. Giorgio Chiellini's header was blocked by Olexander Kucher from an Andrea Pirlo free-kick, while shots from Sebastian Giovinco, Arturo Vidal and Pirlo all went wide as the Italian champions failed to make their possession count.
It was not until first-half stoppage time that Andrei Pyatov was called on to make a save, and he easily held Giovinco's effort from range. Moments later, the ball fell to Paul Pogba from a corner but he blazed over the crossbar.
Shakhtar were better early in the second half as they began to pose a threat, with Yaroslav Rakitskiy trying his luck from range before firing in a dangerous free-kick that Gianluigi Buffon could only fist clear.
But Juventus still looked the more dangerous and Pirlo struck the post in the 53rd minute with a shot from the edge of the area as they continued to probe.
The goal was only minutes away but arrived in fortuitous circumstances as the unfortunate Kucher deflected the ball in under pressure.
Fernandinho blazed wide for Shakhtar before Juve went close again, a corner causing chaos as Leonardo Bonucci and Lichtsteiner had chances in quick succession.
But there was a nervous moment for the Italians moments later when Razvan Rat crossed for Ilsinho and his close-range effort struck the upright.
Juventus saw the game out comfortably after that, however, having further chances to score as Pogba and Vidal saw efforts blocked.
Mirko Vucinic headed wide from a good position before Alessandro Matri missed the target with an effort from long range.