Kohli, whose previous best was 243 against Sri Lanka, remained unbeaten on 254 from 336 balls, his marathon innings, which lasted close to eight hours, studded with 33 fours and two sixes as he became the Indian captain with the highest score in the five-day format.
Kohli, who hadn”t scored a century this year before this inning, also became the Indian batsman with the most number of double tons to his name.
The Indian skipper reached his seventh double century in his 81st Test and in the process surpassed Sachin Tendulkar and Virender Sehwag who both had scored six double hundreds in their stellar careers.
Australia legend Sir Don Bradman tops the list of scoring the most double hundreds (12), followed by Kumar Sangakkara (11), Brian Lara (9) and WR Hammond and Mahela Jayawardane who both scored seven 200s each.
During the course of his innings, Kohli also went past Bradman to become the player with the most 150-plus scores as Test captain. While Bradman had achieved the feat eight times in his career, Kohli has now done it nine times so far.
He is also the only Indian to smash 40 hundreds in international cricket as captain and is now just two tons away from surpassing Ponting”s tally of 41 Test tons as captain with the most hundreds in international cricket.
He also surpassed Dilip Vengsarkar”s tally of 6,868 runs to climb to the seventh position in the list of players with the most runs for India in the longest format of the game.
Meanwhile, Ravindra Jadeja, promoted to bat at No 4 with Hanuma Vihari not playing, missed out on his second Test hundred and got out at 91 after which India declared to have a crack at the visitors.
Umesh Yadav, coming back into the team in place of the injured Jasprit Bumrah, snared the first two wickets of Aiden Markram (0) who was trapped in front and Dean Elgar (6) who was played on to set the tone. Mohammed Shami then had Temba Bavuma (8) caught behind by keeper Wriddhiman Saha.
At stumps, Theunis de Bruyn was batting on 20 with nightwatchman Anrich Nortje on 2.
Earlier, Kohli scored a record seventh double hundred of his career as the motley crowd at the Maharashtra Cricket Association Stadium were treated to batting of the highest order.
Kohli stitched together a 225-run stand with Jadeja for the fifth wicket and also had a partnership of 178 with vice captain Ajinkya Rahane who scored 59 off 168 deliveries (8×4), before Keshav Maharaj had him caught behind by keeper Quinton de Kock.
But there was no stopping the Indian batsmen from scoring runs as Jadeja milked the tired South African bowlers for easy runs while Kohli upped the ante to take Maharaj for two boundaries in an over.
Earlier, Kohli scored a brilliant hundred as he, along with Rahane, took the hosts to a commanding position. At Lunch, India were sitting in the driver”s seat at 356/3 with Kohli reaching his century in 173 balls. The 31-year-old looked in a league of his own from there on as he swatted away the rival bowlers with utter nonchalance to get to his 150 in 241 balls.
After that, he shifted gears with Jadeja at the other end and brought up his record double ton in 295 balls, hitting 28 fours en route.
Jadeja got to his fifty in 79 balls and started playing in one day mode after that as Kohli seemingly waited for the all-rounder to get his hundred.
Such was the power hitting by the duo that Maharaj went for 21 runs in the 150th over.
Jadeja fell short in the end, holing out to Theunis de Bruyn at long off off Senuran Muthusamy.
Starting the day at 273/3, both the overnight batsmen played out the first hour rather cautiously as the Proteas pacers kept bowling on probing lines and tested the techniques of the Indians with the second new ball at the Maharashtra Cricket Association (MCA) Stadium.
During the course of his innings, Kohli also went past Dilip Vengsarkar”s tally of 6,868 runs to climb to the seventh position in the list of players with most runs for India in the longest format.
The Indian team amassed 83 runs in the session without losing any wicket in the morning session.
Earlier on Day 1, Mayank Agarwal (108) had scored a brilliant century and was ably supported by Cheteshwar Pujara (58) as India reached 273/3 when umpires called for early stumps because of bad light.
Brief scores: 1st innings: India 601/5d (Virat Kohli 254 not out, Mayank Agarwal 108, Ravindra Jadeja 91, Ajinkya Rahane 59, Cheteshwar Pujara 58; Kagiso Rabada 3/93; South Africa 36/3 (Theunis de Bruyn 20 batting, Anrich Nortje 2 batting; Umesh Yadav 2/16)