Colombo - India managed 152-6 in 20 overs against South Africa as their hopes of a World Twenty20 semi-final place hung in the balance on Tuesday.
They need to restrict the Proteas to 121 or fewer to qualify for the semi-finals.
Suresh Raina top-scored with 45 before he was run out off the final delivery, after South African captain AB de Villiers won the toss and opted to field first in the final Super Eights group two match at Premadasa Stadium.
India, who need to win by 31 runs to oust Pakistan from the semi-finals, found the varied South African attack tough to handle with Morné Morkel taking 2-28 and left-arm spinner Robin Peterson finishing with 2-25. The Proteas are already out of the competition.
Australia qualified for the last four despite losing their last Super Eights match by 32 runs against Pakistan at the same venue earlier in the day. Hosts Sri Lanka and the West Indies have already qualified for the semi-finals.
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 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 36-3 when Peterson bowled Virender Sehwag for 17, after the Indian opener hit him for a towering six a ball earlier. Skipper Mahendra Singh Dhoni chipped in with a quick 13-ball 23 with three boundaries.
India 152-6 (Suresh Raina 45, Rohit Sharma 25, Mahendra Singh Dhoni 23 not out; Robin Peterson 2-25, Morne Morkel 2-28).
Mahendra Singh Dhoni (captain), Gautam Gambhir, Virender Sehwag, Suresh Raina, Virat Kohli, Yuvraj Singh, Irfan Pathan, Ravichandran Ashwin, Zaheer Khan, Rohit Sharma, Lakshmipathy Balaji.
AB de Villiers (captain), Hashim Amla, Faf du Plessis, Farhaan Behardien, Johan Botha, JP Duminy, Jacques Kallis, Albie Morkel, Morné Morkel, Robin Peterson, Dale Steyn.
Umpires: Kumar Dharmasena (SRI) and Rod Tucker (AUS)
TV umpire: Ian Gould (ENG)
Match referee: Jeff Crowe (NZL)