Rohit Sharma inspired India to a victory over South Africa and a series win that ensures they will leapfrog the Proteas and go top of the one-day rankings.
India had already clinched at least a share of the six-match series as they went into the penultimate ODI in Port Elizabeth holding a 3-1 lead, and they duly continued their dominance in a 73-run win.
Having been put into bat India owed a debt of gratitude to Rohit for pushing them to 274-7 with 115 off 126.
Hashim Amla (71) and Heinrich Klaasen (39) gave the Proteas hope, but the run out of the former proved a key moment in the game and when Klaasen fell to the excellent Kuldeep Yadav the writing was on the wall.
India will now look to finish with a flourish in the series finale in Centurion on Friday.
BREAKING: India will finish the #SAvIND ODI series as the number one side in the @MRFWorldwide ICC ODI Rankings after taking a 4-1 series lead with victory in Port Elizabeth!https://t.co/1oA76LNlyI pic.twitter.com/xNpiqW6kFC— ICC (@ICC) February 13, 2018
Shikhar Dhawan got India's innings off to a quick start as he struck 34 off 23 balls in his opening partnership of 48 with Rohit, striking eight fours before he pulled Kagiso Rabada to deep square leg.
Rohit duly picked up where Dhawan had left off, contributing 62 off only 55 deliveries in a second-wicket stand of 105 with Virat Kohli, who was on 36 when he was run out by JP Duminy.
Kohli's dismissal came as a result of Rohit refusing to run and Ajinkya Rahane (8) went in similar fashion as India's centurion was caught ball-watching.
But Rohit, dropped on 96 by Tabraiz Shamsi, made up for those mental errors as he brought up his first hundred in South Africa with a flick past backward square leg.
Rohit eventually fell to Lundi Ngidi (4-51), who had Hardik Pandya for a duck next ball, but Bhuvneshwar Kumar (19 off 20) helped push India to a total that proved well beyond South Africa.
Aiden Markram went for a run-a-ball 32 as he combined for 52 opening runs with Amla, who found little in the way of support as Duminy (1) and AB de Villiers (6) both failed.
Amla, who hit just five boundaries in a workmanlike 92-ball stay, looked to have found a match-winning partner in Klaasen, but an extremely tight direct hit run out review went against him and sparked a Proteas collapse.
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.
|Red Sox move ahead of Astros in ALCS|
|Depay ´a joy to watch´, says Koeman|
|Timberwolves owner looking to trade Butler, backs Thibodeau|
|Shepard says Giants have ´total faith´ in Manning|
|Hazard is out of this world – De Ligt enjoys Belgium test|
|Tite: Brazil were better than Argentina|
|Foley eyes World Cup after re-signing with Wallabies, Waratahs|
|Low slams decisive France penalty call|
|I fined him for his goal at Old Trafford! Giggs delighted for Wales hero Wilson|
|Matuidi lauds Deschamps´ tactical nous after Germany win|
|Scaloni excited by Argentina despite Brazil loss|
|Tsonga back in business, Dzumhur dumped out in Moscow|
|Germany suffer six defeats in a year for first time|
|Many clubs have asked about Piatek - agent|
|Bartomeu: Barca open to defensive reinforcements after Vermaelen injury|
|Bonn spoil PAOK´s landmark European game|
|Konta conquers Mertens in Moscow|
|Republic of Ireland 0 Wales 1: Wilson stunner moves Giggs´ side top|
|France 2 Germany 1: Griezmann delivers Low blow as Les Bleus reign in Paris|
|Belgium 1 Netherlands 1: Groeneveld cancels out Mertens strike|
|Argentina 0 Brazil 1: Miranda heads late winner after rivalry fails to ignite|
|Messi would struggle in this Manchester United team – Scholes|
|Falcons place Devonta Freeman on injured reserve|
|Westbrook ruled out of Thunder opener|
|Wilder´s team open to Joshua talks|
|Brentford appoint Thomas Frank as new head coach|
|England´s perfect performance sets the standard - Trippier|
|Odell Beckham Jr. needs to create headlines on the field, says Giants owner|
|Robshaw joins list of England absentees|
|Chile need goals from Sanchez despite United form - Rueda|
|Modric reveals Ronaldo respect, ´will never play with´ Messi|
|Osaka can be one of the greats, says coach Sascha Bajin|
|Liverpool´s Naby Keita carried off injured in Guinea match|
|Duminy to miss Australia tour for shoulder surgery|
|F1 Raceweek: Ferrari ready to ´challenge the impossible´ as Hamilton nears title|
|Umesh replaces injured Thakur in ODI squad|
|IAAF delay implementation of testosterone ruling amid Semenya challenge|
|Fakhar and Sarfraz lead Pakistan recovery after Lyon blitz|
|Japan see off Uruguay in seven-goal thriller|
|Arda Turan given huge fine by Istanbul Basaksehir after alleged brawl with singer|
|Busquets no better or worse than Dier – does Opta data back up Allardyce claim?|
|United boss Mourinho charged for alleged post-match comments by FA|
|Halep withdraws from Kremlin Cup ahead of WTA Finals|
|Renato Sanches eager for further Bayern Munich minutes|
|Nations League standings: Promotion, relegation and race for finals|
|Windies coach Law banned for ´inappropriate comments´ in India Test|
|Carrick denies Manchester United stars are ´not trying´|
|Ferrari struggling under pressure of chasing Mercedes, says Massa|
|Australia desperately need Smith and Warner back - Warne|
|Draxler warns Germany: Mbappe has 300 hp!|
|Draymond Green says Warriors will have to ´bring it´ every night in the West|
|England´s ´wonderful bravery´ leaves Southgate excited for the future|
|Jayasuriya: I always conduct myself with integrity and transparency|
|Northern Ireland stars hurt by lack of club football, says O´Neill|
|Rodgers inspires late Packers comeback|
|Brewers blank Dodgers to take 2-1 NLCS lead|
|Cavaliers, Nance agree to four-year extension|
|Ramos wants Spain to believe in Luis Enrique´s team|
|De Laurentiis: I´ve spoken to Genoa and agent about Piatek|
|Kaka tips bright future for Paqueta after Milan agreement|
|Suns star Booker set to return for season opener|
|Warriors coach Kerr not expecting fast start from NBA champs|
|Fultz to start for 76ers as Brown eyes NBA Finals|
|Maltese champions Valletta want Usain Bolt|
|It would have been normal to kill them! Luis Enrique slams abysmal Spain|
|Seahawks, Trail Blazers owner Paul Allen dies aged 65|
|Red Sox ace Sale released from hospital, still set for game five|
|Beer-throwing fan banned by Patriots|
|Southgate lauds ´tremendous´ attackers after famous Spain win|
|Djokovic closing in on summit as he scales new heights|