Virat Kohli marked his 35th birthday with his second century of the Cricket World Cup and Ravindra Jadeja claimed five wickets as India thumped South Africa by 243 runs in a contest featuring the top two teams in the tournament at the Eden Gardens on Sunday.
South Africa's chase of 327 began shakily as they lost half their side cheaply for 40 runs inside 14 overs as Jadeja (5-33) and Mohammed Shami (2-18) wreaked havoc before the Proteas fell to only their second defeat, dismissed for 83 in 27.1 overs.
Jadeja was the pick of the bowlers, shattering the stumps of three batsmen, and Mohammed Siraj (1-11) and Kuldeep Yadav (2-7) all played their part to hand South Africa their heaviest World Cup defeat.
Kohli's unbeaten 101 contained 10 fours and left him level with Indian great Sachin Tendulkar on 49 one-day international hundreds as he continued his superb form by taking his tally past 500 runs in the tournament.
"It was a big game. We were playing probably the toughest team in the tournament. They've played some amazing cricket so there was this motivation of wanting to do well for the team," said man-of-the-match Kohli.
"Because it happened to be my birthday, it becomes a bit more special. People made it a bit more special for me. I had this sense that it's going to be something more today rather than just one more game in the World Cup.
"I did wake up with that excitement."
Kohli dropped anchor in a third-wicket stand of 134 with Shreyas Iyer, who hit 77 with seven fours and two sixes, before making his ton in the 49th over as India finished with 326-5 on a slow Kolkata wicket with late hitting by Jadeja (29 not out).
Both teams have qualified for the semi-finals and Sunday's game was touted as a dress rehearsal for the title clash later this month and it was India who took control early and set up their eighth successive victory.
They will now finish top of the standings.
"If we look at how we played in the last three games, we played better in terms of adapting to the situation," India skipper Rohit Sharma said.
"We were put under pressure against England. In the last game as well, we lost a wicket in the first over but got to a good score and the seamers came to the party.
"Today wasn't an easy pitch, you needed someone like Kohli, who batted to the situation. Not to forget Shreyas."
They elected to bat first after winning the toss and took advantage of some wayward pace bowling by Marco Jansen to make a blazing start but Rohit fell for a 24-ball 40 as he looked to launch first-change Kagiso Rabada over mid-off.
After reaching 91-1 in the powerplay, the hosts lost opener Shubman Gill (23) to an unplayable delivery from Keshav Maharaj in the 11th over as South Africa brought the run-rate under control with spin.
"The first 10 overs with the ball made it a challenge. We did do well after that. The biggest challenge was taking wickets and India built big stands," Rohit added.
"The conditions are the biggest learning. The wicket played as we suspected it to play. We expected it to deteriorate but we didn't adapt well."