An unplayable Indian attack dismissed the Proteas for just 83 after Virat Kohli equalled Sachin Tendulkar's record with a century on his birthday.
Eden Gardens played host to the world-beating India and South Africa as the two sides battled for top spot after already booking their places in the semi-finals of the ICC Cricket World Cup.
After opting to bat first, Rohit Sharma got the hosts off to a flier with 40 off 24 balls at the top of the order.
At one down, in stepped Kohli, who on the occasion of his 35th birthday matched the great Tendulkar's record of 49 one-day international centuries.
The Royal Challengers Bangalore man was unbeaten for his 101 off 121 balls while support from Shreyas Iyer (77 off 87) helped India to a total of 326/5 in their 50 overs.
The target looked an above-par one, and as soon as Mohammed Siraj came out with the new ball, it was certain to be just that.
The Indian strike bowlers picked up Quinton de Kock (5) and Rassie van der Dussen (13) early before Ravindra Jadeja took 5/33 to clean up the Proteas for just 83.
The 243 run victory leaves India unbeaten and guarantees them top spot in the table with one league game against the Netherlands to play.
On Monday, Sri Lanka face Bangladesh before Australia take on Afghanistan on Tuesday -- with six sides still in contention for the remaining two last four spots.