India levelled the one-day series at 1-1 after paceman Munaf Patel clinched a thrilling one-run win over South Africa in the second match at the Wanderers on Saturday.
South Africa, chasing a modest target of 191, appeared on track after captain Graeme Smith hit 77.
When opener Smith inside-edged Munaf on to his stumps, the home team needed 39 more runs with five wickets in hand.
India, though, seized control after seamer Zaheer Khan dismissed David Miller (27) and Johan Botha (4) and Dale Steyn was run out for six.
Munaf, who finished with four for 29, then removed Morne Morkel for six and Wayne Parnell for 12 in the 43rd over as South Africa were bowled out for 189.
Zaheer picked up two for 37 while spinner Harbhajan Singh took one for 32 in 10 probing overs.
Earlier, fast bowler Lonwabo Tsotsobe claimed his second successive four-wicket haul as India made 190 all out after electing to bat first on a slowish pitch.
Tsotsobe produced a telling burst of three for 11 in four overs and received fine support from Steyn and Morkel, who took two wickets apiece, as South Africa took the last seven wickets for 40 runs.
Sachin Tendulkar opened the batting and was on 24 when he was bowled by spinner Botha.
India slipped to 67 for three before Yuvraj Singh and skipper Mahendra Singh Dhoni shared a stand of 83.
Tsotsobe then had Yuvraj caught by Steyn at deep mid-off for 53 before clean bowling Dhoni for 38.
The third game in the five-match series is in Cape Town on Tuesday.
Follow Emirates 24|7 on Google News.