The midfielder slotted home Gregory Tade’s pass on 32 minutes to clinch a first win at Tannadice in almost 13 years and keep Saints within one point of third-placed Inverness.
Craig’s strike was the one bright spot in an uninspiring encounter, with the return of striker Johnny Russell from injury the one positive for the hosts.
The Arabs started brightly, with Stuart Armstrong curling an effort over the bar inside the opening minute, while Gary Mackay-Steven made a hash of an attempted volley from 12 yards.
St Johnstone had a penalty claim turned down when Brian McLean blocked a cut-back from Rowan Vine, before Steven MacLean headed Dave Mackay’s cross harmlessly over the bar.
MacLean’s effort was at odds with Craig’s goal. The 26-year-old, who will join Hibernian in the summer, curled past Radoslaw Cierzniak from 12 yards to give the visitors the advantage at the interval.
Russell was introduced shortly before the hour mark but the game remained devoid of quality.
Cierzniak made a good save from Vine on 67 minutes and he was again alert to deny MacLean from close range before Tade blasted the rebound over the bar, Saints finishing the game strongly.