Rohit Sharma ended a personal South African hoodoo and set up a series win for India in the fifth one-day international at St George's Park on Tuesday.
Sharma's 115 was his first major innings in three tours of South Africa -- and India's 73-run win enabled the tourists to take a winning 4-1 lead in the six-match series, their first success in seven bilateral or multi-team series in South Africa.
"It's a wonderful feeling to have created some history," said Indian captain Virat Kohli, who praised what he described as a "complete performance" by his team.
"The guys really got stuck in, with the bat and the ball and in the field as well."
South Africa's chances of overhauling India's 274 for seven plummeted when they lost their first three wickets inside the first 13 overs. Hardik Pandya struck crucial blows by dismissing JP Duminy and AB de Villiers.
Hashim Amla played a measured innings of 71 and shared partnerships of 62 with David Miller and 39 with Heinrich Klaasen. He was run out by a direct hit from Pandya, effectively ending the home team's hopes.
Indian wrist spinners Kuldeep Yadav and Yuzvendra Chahal were effective on a slow pitch, taking four and two wickets respectively.
"Our batting wasn't up to scratch," said South African captain Aiden Markram. "We lost wickets in clumps. But we have to give credit to India, they're playing incredibly well."
Low-scoring run broken
Sharma's 17th one-day international century ended a run of low scores in South Africa. In 19 previous innings across both Tests and one-day internationals, his previous highest score was 47 and he had scored only 249 runs at an average of 13.11.
He said he had ensured that he stayed in a good frame of mind despite not making big scores.
"I have been enjoying South Africa. It's a good place to play cricket. I knew I didn't have to change a lot and the runs would come," he said.
With the series won, using only 12 of India's 17-man squad, Kohli said: "We want to win 5-1 but there might be a scenario to give a few (other) guys a chance."
Although he was the mainstay of the innings, Sharma was at least partially complicit in two run-outs, both of which happened after he sent his batting partner back.
The first run-out accounted for captain Virat Kohli, who made 36 -- his lowest score of the series -- in a second wicket stand of 105 with Sharma. Kohli called Sharma through for a risky single, then could not beat JP Duminy's direct hit at the bowler's end.
Ajinkya Rahane was the second run-out victim, playing a ball to mid-on and almost reaching the other end of the pitch before realizing Sharma was refusing a run.
Sharma hit 11 fours and four sixes in his 126-ball innings but should have been caught on 96 when Tabraiz Shamsi dropped a straightforward offering at third man off Kagiso Rabada.