India still leads the six-game series 3-1 but South Africa's victory in the rain-shortened game at the Wanderers gave it a glimpse of hope that it could avoid a first-ever ODI series loss at home to the Indians.
India scored its first bilateral ODI series win in South Africa. It was also his second ton against South Africa, the first one came in 2015 at Kanpur when he scored 150.
Once again, South Africa struggled to get through India's top order after getting an early wicket.
But Rohit seems to have devised a plan to escape the wrath of the captain: Just score big and make up for Kohli's wicket.
Rohit Sharma, who had been off-colour for the first four matches, came into his own and hit his 17th ODI century but got out at a wrong time for 115. Chinaman bowler Kuldeep Yadav scalped three wickets in his tenth over when he dismissed Kasigo Rabada, Klaasen and Tabriaz Shamsi to signal India's win.
"I think it was another complete performance from us and something we needed to do after the last game", India captain Virat Kohli said.
The Men in Blue still have a two-match cushion in the six-ODI series.
It was required because the visitors also suffered a mini-collapse, losing four wickets for 29 runs. "It's a must-win game for them, we have the lead and the advantage so we would like to put some decent runs on the board for them to chase down".
Lungi Ngidi was the key bowler for South Africa as he finished his spell with four wickets.
Another awful mix-up saw Ajinkya Rahane get run out by Morne Morkel for just eight runs. Coming into the fifth ODI at Port Elizabeth, India had already managed to take that number to three but a win is what they were after to avoid any drama later.
Looking to overcome his poor run of form then, Rohit started off slowly against Morne Morkel (0/44 in 10 overs) and Kagiso Rabada (1/58 in 9 overs), with the former bowling out two maiden overs.
Match starts at 4.30 p.m. IST. It turned out to be the turning point of the match as South Africa lost their way after Amla's departure.
But as it proved to be, it was 73 too many for South Africa.
India: Virat Kohli (capt), Rohit Sharma (vice-capt), Jasprit Bumrah, Yuzvendra Chahal, Shikhar Dhawan, MS Dhoni (wk), Shreyas Iyer, Kedar Jadhav, Dinesh Karthik, Kuldeep Yadav, Bhuvneshwar Kumar, Mohammed Shami, Manish Pandey, Hardik Pandya, Axar Patel, Ajinkya Rahane, Shardul Thakur. The telecast will be made available on Sony Ten 1, Sony Ten 1 HD, Sony Ten 3, Sony Ten 3 HD channels.