The hosts had stormed to a 2-0 lead after winning the first two games, but South Africa scored twice in the first half in New Delhi and held on to bag their first win.
Lloyd Madsen found the breakthrough from a penalty in the 21st minute and Ian Haley netted on the stroke of half-time.
Sandeep Singh narrowed the gap for India in the second period, but Craig Haley struck the winner with 15 minutes left.
"It was a great performance and the first time the South African men's team have have beaten India since 2004," said delighted SA captain Austin Smith.
"We moved the ball exceptionally well and put India under a lot of pressure, closing down their space, while our basics were far better."
South Africa face India in the fourth Test on Friday.
Scorers:
India 1 (Sandeep Singh 49) South Africa 3 (Lloyd Madsen 21pen, Ian Haley 35, Craig Haley 55)
Half-time: 0-2