A hostile trio of Pakistan left-arm fast bowlers took full advantage of a pitch freshened by rain to hand pre-tournament favourites South Africa their second defeat in the cricket World Cup at Eden Park on Saturday.
Man-of-the-match Sarfraz Ahmed equalled the world record for catches by a wicketkeeper in a one-day international 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.
After Quinton de Kock had edged Irfan's second ball to Sarfraz, Hashim Amla started as if he wanted to score the runs by himself.
Amla's first seven scoring shots were boundaries and he became the tournament's highest run scorer on his way to 38 before he gave Sarfraz his third consecutive catch.
Wickets then tumbled swiftly, leaving de Villiers watching impassively at the other end. He flicked Wahab to square leg for four and hooked a six in the same over and looked to be taking his team to victory when he edged Sohail Khan to Sarfraz.
Wahab wrapped up a 29-run victory when Imran Tahir gave Sarfraz his record-equalling catch.
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.
The experienced Younus Khan, returning to the Pakistan side in place of the injured Haris Sohail, reached 37 when he poked de Villiers's gentle medium pace to Rilee Rossouw at cover.
Sohaib Maqsood followed for eight with an equally tame catch to the same fielder at point.