South Africa's Ntini (left) took 5-21 off six overs
Champions Trophy, Mohali: South Africa 213-8 (50 overs) bt Pakistan 89 (25 overs) by 124 runs
South Africa tore through Pakistan's top order for a landslide 124-run win in Mohali to book their place in the Champions Trophy semi-finals.
The Proteas won the toss but were reeling at 42-5 before Mark Boucher (69) and Justin Kemp (64) ground out 131 to set a total of 213-8.
But Pakistan were in deeper trouble at 47-8 and were unable to recover, surrendering on 89 in 25 overs.
South African paceman Makhaya Ntini took 5-21 off six overs.
Former skipper Shaun Pollock ended with 2-20 off seven and Charl Langeveldt chipped in with 2-19 off five.
Swashbuckling all-rounder Shahid Afridi offered Pakistan brief hope with a four and a six in his 14, while Yasir Arafat (27) and Umar Gul (7) staved off the inevitable with a late stand of 30. None of the top seven reached double figures.
Pakistan's record lowest one-day score is 43 against West Indies in Cape Town in 1993, while the lowest ever (35) was posted by Zimbabwe against Sri Lanka in Harare in 2004.
South Africa's Boucher (69) added 131 with Justin Kemp (64)
South Africa's second victory in Group B ensured they qualified top of the group and will travel to Jaipur to meet the winner of Sunday's match between Australia and India.
New Zealand, as runners-up, will play the winner of Group A in Mohali, while Pakistan and Sri Lanka were eliminated from the tournament.
But the eventual outcome in Mohali looked distinctly unlikely when South Africa lost two wickets inside the first over.
Captain Graeme Smith led the procession back to the pavilion with the second ball of the match, out lbw to paceman Gul, and was followed two deliveries later by Herschelle Gibbs, caught by Shoaib Malik at first slip.
Boeta Dippenaar and Jacques Kallis survived some close calls before Dippenaar fell for 13, caught one-handed by an athletic dive across first slip from wicket-keeper Kamran Akmal off Rao Iftikhar Anjum in the 10th over.
Kallis stuck around long enough to make 17 before edging behind to Akmal, also off Anjum, while AB de Villiers (10) became Akmal's third victim, this time off seamer Arafat.
De Villier's demise left South Africa reeling but wicket-keeper Boucher and Kemp knuckled down to give the Proteas hope.
Boucher, beginning to up the run rate after weathering the storm, eventually fell in the 44th over, caught by Mohammad Hafeez off the bowling of Abdul Razzaq after facing 98 balls.
Former skipper Pollock added just two before he was caught by Anjum off Hafeez, while Kemp, who hit two big sixes late on, was pouched by Malik off Gul in the final over.
Andre Nel (12 not out) saw out South Africa's allocation of overs with Ntini as Gul ended with 3-36 and Anjum took 2-26.