Spinner Ravichandran Ashwin took 7-66 as India beat South Africa by 124 runs to win the third Test and take a 2-0 series lead with one match to play.
South Africa began day three in Nagpur on 35-2, needing 310 to win, but were all out for 185 with two days to spare.
The defeat means the top-ranked Proteas lose an away Test series for the first time since losing in Sri Lanka in 2006.
India have won eight of their last nine home Tests – the other being the rain-hit drawn second Test in Bangalore.
All eight of those India victories – 4-0 against Australia, 2-0 against West Indies and the two wins in this series – have come inside three days.
A total of 33 of the 40 wickets in the Test, including all 20 South African wickets, fell to spinners, with man of the match Ashwin taking 12 in the game.
It is the fourth time in 31 Tests that Ashwin has taken at least 10 wickets, and it helped his side record a first series win over South Africa in 11 years.
He trapped both Dean Elgar and AB de Villiers leg before wicket early on day three but captain Hashim Amla (39) and Faf du Plessis (39) added 72 for the fifth wicket – South Africa’s second highest stand of the entire series.
However, they did not find batting easy, adding just 21 runs in 19 overs after lunch and their 46.2 overs partnership was finally ended when leg-spinner Amit Mishra had Amla caught at gully by captain Virat Kohli.
Mishra (3-51) then bowled Du Plessis, who went for a pull shot but the ball kept low.
Ashwin took the last four wickets to fall on a dusty, deteriorating pitch – which was heavily criticised after 32 wickets fell within the first two days – to make sure of the series win.
The fourth and final Test takes place from 3-7 December in Delhi.