Chahal returned figures of four for 51 to rip the heart out of the South African batting line-up, to the delight of a large contingent of Indian fans.
Chris Morris, batting at number eight, provided late resistance with his fighting 42 during an eighth-wicket partnership of 66 with Kagiso Rabada, who made an unbeaten 31 — his highest one-day international total.
Paceman Jasprit Bumrah did the early damage, dismissing both openers to put South Africa, who desperately need a win after defeats in their opening two games, in deep trouble.
Chahal bowled Rassie van der Dussen for 22 with the first ball of his second over to end a 54-run third-wicket partnership.
He then bowled skipper Du Plessis for 38 later in the same over.
Spin partner Kuldeep Yadav also chipped in with the wicket of JP Duminy, trapping the batsman lbw for three as South Africa slipped to 89-5.
David Miller and Andile Phehlukwayo then put on 46 runs to slow India’s charge and keep the scoreboard ticking over.
But Chahal once again made the breakthrough, dismissing both batsmen. Miller was caught and bowled for 31 while Phehlukwayo was stumped on 34.
Earlier, Bumrah, the world’s top-ranked one-day international bowler, had the ball darting around on a cloudy morning in Southampton as he sent back Hashim Amla for six.
Amla, who missed South Africa’s previous match against Bangladesh, defended a delivery with extra bounce from Bumrah but got an outside edge and was caught at second slip by Rohit Sharma.
Bumrah then struck again in his next over, with Quinton de Kock, who made 10, edging to skipper Virat Kohli at third slip, meaning South Africa were two down for 24.
But some counter-attacking batting late in the innings from Morris, who hit a boundary and two sixes during his 34-ball knock, gave the South Africans something to bowl at.
South Africa have been hit by a spate of injuries, with pace spearhead Dale Steyn making an early exit from the tournament without playing a game.
India, among the favourites, are playing their first game in the round-robin event, which concludes on July 14 in London.