Pakistan leg-spinner Shahid Afridi took 3-37 and paceman Rao Iftikhar grabbed 3-33 to restrict South Africa to 197 in the third day-night international here.
Afridi dismissed Jacques Kallis (13), Justin Kemp (42) and Shaun Pollock (one) to trigger a middle-order slump as the tourists found the going tough on a pitch of variable bounce at Iqbal Stadium.
The five-match series is level at 1-1 after South Africa won the first match by 45 runs and Pakistan took the second by 25 runs.
South Africa, which was reduced to 77-3 in 20 overs after deciding to bat, was lifted by captain Graeme Smith (48) and Kemp, who shared a fourth-wicket stand of 45 off 75 deliveries but never looked in command.
Herschelle Gibbs, who scored a century in the first match, looked in a punishing mood as he hit four boundaries before edging paceman Umar Gul to wicket-keeper Kamran Akmal after scoring 19.
Gibbs, on ten, completed 7,000 one-day runs, to become only the second South African behind Kallis to achieve the milestone.
Kallis, who made eight and nought in the first two matches, failed once again as he miscued a drive off Afridi and was well caught in the covers by Misbah-ul Haq for 13.
AB de Villiers, the best South Africa batsman in the series with 103 not out and 35, made just 17 before before his uppish drive off Iftikhar was smartly snapped up by Afridi at mid-wicket.
It was left to Kemp and Smith to steady the innings but they never posed any real threat against some disciplined Pakistan bowling.
Smith, who remained on 18 for ten overs, was run out in the 33rd over when he failed to beat a throw from Shoaib Malik to the striker's end.
Kemp hit two sixes to raise the tempo before he went for a third only to be bowled by Afridi in the 42nd over.
South Africa lost Mark Boucher (17), Pollock and Albie Morkel (12) as Iftikar wrapped up the innings in the slog overs.
Earlier, Pakistan brought on Yasir Hameed for Imran Nazir, while South Africa remained unchanged from the last match.