A hostile trio of Pakistan left-arm fast bowlers took full advantage of a pitch freshened by rain to hand South Africa their second defeat in the cricket World Cup at Eden Park.
Man-of-the-match Sarfraz Ahmed equalled the world record for catches by a wicket-keeper in an ODI with six dismissals, taking his final catch as rain swept across the ground.
Set 232 to win off 47 overs on the Duckworth-Lewis method after Pakistan had scored 222 from 46.4 overs in an innings twice interrupted by rain, South Africa were dismissed for 202 from 33.3 overs after a thrilling counter-attack from AB de Villiers.
The South African skipper threatened to win the game on his own but when he became the ninth wicket to fall, caught behind for 77 from 58 deliveries, the task was too much.
Rahat Ali was the most successful of the Pakistan bowlers with three for 40. Mohammad Irfan and Wahab Riaz, also took three with the latter, despite taking some punishment from de Villiers, impressing again with his pace and hostility.
Ealier, Pakistan struggled throughout their innings with their top order batsmen failing to capitalise on some promising starts and their tail succumbing tamely.
Captain Misbah-ul-Haq once again anchored his team's batting with 56 off 86 balls while Dale Steyn was the pick of the South African bowlers, taking three for 30 from his 10 overs and bowling with fierce pace and control from both ends.
Sarfraz, who opened the batting, looked to be taking charge when he lofted off-spinner JP Duminy over wide long on for three sixes in an over.
In the following over, though, he was run out for 49 attempting a risky second run which would have brought up his half-century following sharp work by David Miller at square leg.
Pakistan 222 all out in 46.2 overs (Misbah 56, Steyn 3-30)
South Africa 202 all out in 33.3 overs (de Villiers 77, Rahat 3-40)
Source: Al Jazeera and agencies