Kohli, India's premier batsman, hit 18 sweetly timed boundaries in his 181-ball knock with the standout shot being a pull off the fast and furious Steyn. He played some flowing drives, played the square cut well and was severe on leg-spinner Imran Tahir, who was repeatedly pulled towards the deep mid-wicket boundary.
His shot selection was admirable as he was ready to leave a lot of deliveries but didn't forget to punish the loose balls.
Kohli reached his fifth Test hundred when he played off-break bowler Jean-Paul Duminy's delivery towards mid-wicket for a couple before celebrating the milestone with a leap and punch of his fists in the air.
As he took charge of taking on the Proteas attack, he was well complemented by Cheteshwar Pujara (25) during their 89-run third wicket stand before he was unfortunately run-out due to a horrible mix-up.
Rahane, playing only his second Test, also showed good temperament during their fifth-wicket stand of 68 runs as the young Mumbai batsman grew in confidence with passage of time.
Kohli was finally out giving a catch to Duminy at covers off Kallis' bowling. Each bowler of the South African pace quartet got a wicket each.