Lungi Ngidi crowned a dream Test debut with second-innings figures of 6-39 as South Africa thumped India by 135 runs in Centurion to secure victory in their three-match series with a game to spare.

India's hopes of avoiding defeat in the second Test were slim when they began the final day on 35-3 in pursuit of 287, Ngidi having picked up two wickets - including the prized scalp of Virat Kohli - the previous evening.

On a wearing surface offering variable bounce, the tourists made life much tougher for themselves with a series of reckless dismissals in Wednesday's morning session.

Despite a defiant 47 from Rohit Sharma, India were ultimately dismissed for 151, with Ngidi the star of the show as South Africa opened up an unassailable 2-0 lead and ensured India will suffer a first series defeat since Kohli was appointed as their full-time Test captain.

Excelling on home turf, Ngidi's first notable contribution on day five came in the field as Cheteshwar Pujara made unwanted history by becoming the first India player to be run out twice in one Test.

After a sliding stop from Ngidi on the boundary, AB de Villiers' throw saw Pujara short of his ground as the batsman and Parthiv Patel chased a third run.

Parthiv was the next man to give his wicket away, his wild hook off Rabada (3-47) superbly caught by a diving Morne Morkel at fine-leg.

And more irresponsible batting followed as Hardik Pandya was caught behind for six attempting to ramp Ngidi over the slip cordon.

Ngidi soon struck again to remove Ravichandran Ashwin, but a fifty stand between Rohit and Mohammed Shami (28) delayed the inevitable.

Rohit eventually fell victim to another wonderful catch, this time from De Villiers following another ill-advised hook off Rabada, and Ngidi completed his five-for with the wicket of Shami before ousting Jasprit Bumrah to finish the match.