© PA Photos
The hosts almost took the lead in the 14th minute when Murray Davidson latched on to a corner, only to send his header just over the bar.
It was United who took the lead, however, as Ryan Gauld made no mistake with his finish in the 22nd minute to make it 1-0.
© PA Photos
St. Johnstone came close to getting an equaliser five minutes before the break when they were awarded a free kick 25 yards from goal in the middle of the pitch. Craig stepped up, but sent his effort narrowly over.
United were the next to come close as Michael Gardyne curled an effort goalwards from just inside the box, but his strike was just too high.
St Johnstone should have been level on the hour mark, but United somehow survived a flurry of chances for the hosts. Radoslaw Cierzniak made a couple of fine saves to deny them, while Barry Douglas was also forced to clear an effort of the line to maintain his side's narrow lead.
The hosts continued to pour forward and Nigel Hasslebaink was denied by Cierzniak with a header before Davidson nodded an effort over from just six yards out.
United's rearguard action didn't get any easier when Stuart Armstrong received his marching orders in the 77th minute after picking up a second yellow card for simulation.
St Johnstone missed another gilt-edge chance to draw level one minute into stoppage time when Steven MacLean blasted his effort over from 12 yards out.
However, they did finally find the equaliser in the 93rd minute courtesy of a Craig strike that saw them move level on points with fourth-placed Ross County in the SPL table.