After putting Saints ahead, Paul Dummett hauled down Jon Daly for a 43rd-minute penalty the striker converted before Stuart Armstrong's long-range effort gave United a deserved half-time lead at Tannadice.
Errors littered the hosts' game, though, and ex-United striker Steven Thompson equalised with his fourth goal in three games before Brian McLean was sent-off.
Marc McAusland put the Buddies in front after 65 minutes and a rare David van Zanten goal after 78 minutes completed victory for the visitors, rendering Barry Douglas' 90th-minute free-kick mere consolation.
A second away win of the season took the Buddies to 24 points, one behind United, who remained eighth after their winless run was extended to four matches, during which they have conceded 11 goals.
- Sports & Recreation