South Africa's new fast bowling sensation Lungi Ngidi ran through India to condemn the visitors to a 135-run defeat in the second Test in Centurion and clinch the series for the Proteas.
India's began the final day of an enthralling second Test on the back foot, 3-35 chasing a victory target of 287, but with captain Virat Kohli already dismissed.
SCORECARD: South Africa win by 135 runs
That situation got worse when Cheteshwar Pujara was run out by South Africa talisman AB de Villiers.
Kagiso Rabada chimed in with important wickets of Parthiv Patel - brilliantly caught in the deep by Morne Morkel - and Rohit Sharma, who top scored in the innings with 47.
But Ngidi was the hero of the day, and the Test match, putting Australia on alert ahead of their fourt-Test tour later this year, to finish the innings with 6-39 from 12.2 scintilating overs.
The Proteas had started the day with a spring in their step knowing the dangerous Kohli was already in the sheds.
"It's massive for us and I think it's massive for India, knowing he's not batting," said South Africa opener Dean Elgar.
"He's a very special batsman, as we saw in the first innings. I'm sitting here with a smile on my face because he's one less very competitive, extremely talented batsman we have to deal with."
The hosts will head into the final day confident of picking up the seven wickets they need to wrap up an impressive victory in the three-match series, after a 72-run win in the first Test at Cape Town.
Completing the job on Wednesday would help banish the memories of the 3-0 loss in India in 2015-16 on spin-friendly pitches.
"We left India with a lot of scars," said Elgar. "Beating them in South Africa will be quite satisfying for us.
"The wicket's going to play in our hands. Our fast bowlers thrive on bowling on wickets like this."
The unpredictability of the wicket contributed to the dismissal of Murali Vijay, who was bowled off an inside edge by a ball from Kagiso Rabada which cut back at him and kept low.
Debutant Ngidi, who came on as first change, took a wicket with his first ball of the innings when Lokesh Rahul played a loose forcing shot off the back foot and was caught at backward point.
Ngidi, 21, forced India's champion batsman Kohli, who scored 153 in the first innings, to play defensively before he scored his first runs with an edge for four which flew wide of third slip.
Kohli had scored five when he went back on his stumps to a ball which cut back sharply and struck him on the pad. Kohli sought a review of umpire Michael Gough's decision but replays showed the ball was crashing into the top of middle stump.
India had been reduced to 3-26. Ngidi caused more damage when the left-handed Parthiv Patel was struck in the ribs and collapsed to the turf. Patel recovered and battled to five not out at the close.
Ngidi, playing in only his tenth first-class match, took 2-14 in six overs.
South Africa could have had a fourth wicket when Cheteshwar Pujara was beaten by a ball from Morne Morkel.
Wicketkeeper Quinton de Kock started to appeal but was not supported by Morkel or the slip fielders, but replays showed a faint edge.
The slowness and uneven bounce of the pitch made for slow going as South Africa ground out 258 in their second innings.
There was some bright batting early in the day when AB de Villiers and Elgar added 54 runs in the first hour, taking their third-wicket partnership to 141.
But De Villiers was caught behind for 80, made off 121 balls, and Elgar followed soon afterwards.
Mohammed Shami dismissed both batsmen and finished with 4-49, taking three wickets in four overs before lunch.
He said India's bowlers had given "110-120 percent" on a slow pitch which had kept low from the first day.
"Today we were looking to give away as few runs as possible and we wanted to attack them fully and bowl in good areas as much as possible," Shami added.
South African captain Faf du Plessis and Vernon Philander put on a painstaking 46 in 26 overs to ensure India would have to chase more than 250. Du Plessis was ninth out for 48 off 141 balls.