But India's bowlers, who had the rougher end of the conditions in the previous ODI in Johannesburg and weren't as disciplined either, roared back to keep South Africa to just 201 all out in 42.2 overs, for a famous win.
South Africa stayed alive in the one-day worldwide series against India with an enthralling five-wicket win in the fourth game on Saturday. Shikhar Dhawan (34) and Rohit (115) got off to a cautious start scoring just five runs in the first three overs before the boundaries started to flow.
In his next over he claimed the wicket of the risky Shreyas Iyer, caught behind by Heinrich Klaasen for 30, leaving India on 240/6 with 5 overs left in their innings.
India were sent in to bat by the Proteas, with the opener Shikhar Dhawan falling with the score on 47. Rohit's 17th ODI hundred set up India's series-clinching win. Ngidi took four wickets for South Africa which started the chase very well as the openers put on 52 runs. Hardik Pandya had possibly his best bowling day in coloured clothing, returning 2 for 30 in nine overs which included the wicket of AB de Villiers, and running out Hashim Amla (71 off 92) with a direct hit.
Kuldeep then removed Andile Phehlukwayo and Rabada and all hope went when the same bowler had Klaasen stumped as India dethroned South Africa as the top team in the 50-over game.
If Kohli and his boys do manage to win the fifth ODI, it will not only be their first win at the ground, but will also be India's first bilateral series win against the Proteas.
After surrendering first three ODI to Virat Kohli and boys, the proteas bounced back with a victory in their last game at Johannesburg handing stand-in-skipper Aiden Markram his first win as captain in global matches.
The last match of the series is at Centurion in Pretoria on Friday and will be followed by three Twenty20 clashes. But, it wasn't all smooth in the middle for the Indian batsman. They were the stars of India's bowling.
Rohit reached his century off 107 balls with the aid of 10 fours and 4 sixes.
While the hosts have made one change in the playing eleven as Chris Morris has been replaced by spinner Tabraiz Shamsi, the Virat Kohli-led Team India remains unchanged. With a tough decision to make, the third umpire flashed OUT on the enormous screen to create a hush inside the stadium and extinguish South Africa's hopes. It turned out to be the turning point of the match as South Africa lost their way after Amla's departure.
WICKET!South Africa have got the big wicket of Virat Kohli, who is run-out for 36.