Former champions India beat South Africa by one run on Tuesday but still crashed out of the World Twenty20 as Pakistan went through to the semi-finals by virtue of a higher run rate.
India made 6-152 in their 20 overs and needed to restrict South Africa to 121 runs or less to reach the last four at Pakistan’s expense.
India bowled their opponents out for 151 in a narrow but academic victory.
Pakistan will meet host Sri Lanka in the first semi-final in Colombo on Thursday while Australia, who went through on run rate despite losing to Pakistan, will play West Indies on Friday.
Faf du Plessis led the South African reply with an aggressive 65, studded with two towering sixes and six boundaries off just 38 balls.
When he fell in the 13th over with 58 runs were still needed but India’s bowlers led by Zaheer Khan (3-22) kept their nerve to record their second win in three Super Eights encounters.
South Africa, who had lost both of their two earlier matches in the round of eight, needed 14 off the last Lakshmipathy Balaji over.
Albie Morkel hit a six off the first ball but was bowled off the second.
Morne Morkel also hit a six off the fourth ball but Balaji snatched the win when he bowled the last man with a full-length delivery, ending on figures of 3-37.
India owed their total of 6-152 to Suresh Raina’s 45.
Raina hit five boundaries during his 34-ball knock and added 44 for the fifth wicket with Rohit Sharma who made 25.
India were off to a disastrous start as opener Gautum Gambhir was bowled by Morne Morkel in the fourth over for eight, before the in-form Virat Kohli was caught behind off a rising delivery from Jacques Kallis for two in the next.
It became 3-36 when Peterson bowled Virender Sehwag for 17, after the Indian opener hit him for a big six a ball earlier.
Skipper Mahendra Singh Dhoni chipped in with a quick 13-ball 23 with three boundaries.
Morkel finished with 2-28 while Peterson took 2-25.