India beat South Africa by 37 runs in Durban to qualify for the World Twenty20 semi-finals and end the hosts' interest in the competition.
The Proteas restricted India to 153-5 and needed to make just 126 runs to qualify for the semi-finals even in defeat.
But with the ball zipping about under the lights, RP Singh took 4-13 and S Sreesanth and Harbhajan Singh weighed in with two wickets apiece as South Africa managed just 116-9 in reply.
The result means India will face Australia in the semi-finals on this ground on Saturday evening. New Zealand play Pakistan in the other semi-final.
On a ground where India had never beaten South Africa before, MS Dhoni won the toss and elected to bat, but his side were soon in trouble.
None of the first four made 20 and three early wickets fell in four balls, but Dhoni and 20-year-old Rohit Sharma set up the basis for a compeitive total with a stand of 49 for the fifth wicket.
Dhoni crashed 45 from 33 balls with four fours and a six, while Sharma, batting for the first time in the tournament, made 50 from 40 balls and completed his half century with a six off the final ball of the innings.
It was one of the competition's smaller totals but in the conditions proved far too much for South Africa.
They were quickly 31-5 and although they recovered somewhat with a 69-run stand for the sixth wicket beween Mark Boucher and Albie Morkel, the required rate kept rising.
They needed 17 from the final over to reach that magic 126, but offspinner Harbhajan tied them down to just seven.
Who will win the World Twenty20?