Huub Stevens' side made the trip knowing qualification was in the can barring an unforseen meltdown, but armed with the knowledge they needed a win for the purposes of their battle for top spot with AZ Alkmaar.
The pair headed the group on eight points before this and top spot will almost certainly be decided by their last-game meeting after this win which put the seal on PAOK's progression.
An unfortunate Aldid Dzidic own goal and a Stelios Kitsiou strike saw off a Shakhter side who have made little impression after initially being primed for the Champions League.
With Shakhter having picked up just two points across four games they were not expected to offer too much resistance and PAOK started accordingly as Sotiris Ninis went close from the edge of the box.
The home side would pipe up, though, and made an impression as Aleksandar Simcevic drilled in a shot which Panagiotis Glykos saved, with the goalkeeper then denying Andrey Finonchenko.
The traffic remained one way and Glykos earned his corn again as Simcevic wrapped in another shot, before PAOK woke up and Costin Lazar slipped a shot just away from goal.
Miroslav Stoch was the next to try his luck but to no avail, with the same man then seeing a well-hit effort stopped by Alexandr Mokin.
Stoch was a real danger and drew another save from Mokin after the break and it was no surprise that he was involved in the first goal, with his 54th-minute pass finding Lucas whose cross flicked off Dzidic and looped in.
Shakhter took some time to respond and their next effort arrived in the 70th minute - Andrey Finonchenko passing up a fine chance from six yards.
They had little to offer beyond that, though, and with seconds left on the clock Kitsiou cracked in from midway through the area after smart work from Dimitris Salpingidis.