The 29-year-old displayed magnificent placement as he racked up 14 boundaries, including two maximums, in fine fashion as India posted a commanding total of 303-6.
Earlier in the day, South Africa had won and toss and chose to have a bowl.
In response, Hashim Amla departed early and the hosts never really recovered from that.
South Africa: Aiden Markram, Hashim Amla, JP Duminy, Imran Tahir, David Miller, Morne Morkel, Chris Morris, Lungisani Ngidi, Andile Phehlukwayo, Kagiso Rabada, Tabraiz Shamsi, Khayelihle Zondo, Farhaan Behardien, Heinrich Klaasen (wk). Both senior players and debutants are unable to read it from the hand or off the pitch, which has put India on the brink of winning their first ODI series in the Rainbow Nation.
Kimberley: Opener Smriti Mandhana continued her rich vein form as Indian women cricket team thrashed South Africa by 178 runs in the second ODI of the three-match series in Kimberley on Wednesday.More news: England left to lament controversial Glenn Maxwell catch call in Twenty20
More news: Suffragette pardons 'complicated' but 'we will take a look,' says Amber Rudd
More news: President, First Lady making a stop in Southwest Ohio Monday
While Indian innings found a rock in Virat Kohli who scored a magnificent unbeaten 160 to help them breach the 300-run mark, there was no such luck for South Africa.
South Africa made three changes. The previous-best was 98 (out of 130) by Sourav Ganguly against Sri Lanka in 1999. "Then wickets kept falling, I made a decision to hit out, because I thought I might not have enough energy left", the Indian captain said in a press conference after the match. With this 124-win, India now for the first time, have won 3 consecutive ODIs against South Africa in South Africa. In fact all three matches in this series have been sold out and the same is true of the Pink ODI at the Wanderers on Saturday but many punters might be suffering from "buyers remorse" given the appalling performance of the national side over the past few matches. Only Ricky Ponting (22 in 220 innings) and AB de Villiers (13 in 98 innings) have more.
Today the stalwart batsman got his 34th One Day International Hundred from just his 205th game.
5 - Virat Kohli's 160 is the fifth-highest score by an Indian captain in ODIs. "That is how it is usually done", said the Indian captain, "Batting second is very different in terms of knowing what you need to do, when to accelerate, when to keep those singles coming, etc. Batting first, you want to score as many as possible but sometimes the situation doesn't allow you to play in a certain way that you want to throughout the innings". "After the third time we have played them the guys are still struggling to read the ball".
7 - Only seven Indian players have hit more ODI sixes than Virat Kohli (101).