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.
|Championship Review: West Brom crush QPR as Leeds stay perfect|
|Allegri pleased with Ronaldo despite goalless Juventus debut|
|Chelsea can produce magic with Sarri in charge - Hazard|
|Emery ´happy without the result´ as Arsenal comeback falls short|
|Gordon confirms Cleveland Browns return|
|Eight shots and only 30 passes - Ronaldo´s Juventus debut in Opta numbers|
|Cristiano Ronaldo´s debuts: Best impressed, scoring a penalty & a blank for Juventus|
|Old boy Escare haunts Catalans in big Wigan win|
|Preston North End 2 Stoke City 2: Super sub Crouch salvages a point|
|Pochettino vows not to discuss Alderweireld future before five-minute answer|
|Waring, Aiken lead the way as Olesen stays in the hunt|
|Linking play, forcing saves and clashing with goalkeeper - Cristiano Ronaldo´s Juventus debut|
|Chelsea 3 Arsenal 2: Alonso snatches win after Gunners comeback|
|West Ham still haunted by last season - Pellegrini|
|Puel defends Vardy after Wolves red card|
|Chievo 2 Juventus 3: Ronaldo´s debut ends in dramatic win|
|Mbappe: Neymar is Paris Saint-Germain´s superstar|
|Pickford should have seen red - Hughes fumes over challenge on Ings|
|Kohli and Rahane star as India edge day one|
|AC Milan´s Strinic sidelined by heart problem|
|Kane happy to banish August goal hoodoo|
|Guingamp 1 Paris Saint-Germain 3: Mbappe returns to inspire comeback|
|Springboks´ second-half revival punishes Pumas|
|Finally! Kane scores a Premier League goal in August|
|Warnock enjoyed ´poetic justice´ of Kenedy´s penalty woe|
|Holders Eintracht Frankfurt stunned by Ulm in DFB-Pokal|
|West Ham 1 Bournemouth 2: Wilson, Cook condemn Hammers to successive losses|
|Tottenham 3 Fulham 1: Trippier and Kane help Spurs avoid Wembley wobble|
|Leicester City 2 Wolves 0: Lucky Foxes win despite Vardy red card|
|Everton 2 Southampton 1: Richarlison continues fine start|
|Drochtersen/Assel 0 Bayern Munich 1: Lewandowski spares Bayern´s blushes|
|Violent hack, no passes, missed penalty - Kenedy´s Cardiff nightmare|
|Ronaldo handed Juventus debut against Chievo|
|Cheika and Hooper frustrated by second-half slump|
|Hansen issues warning after All Blacks win Wallabies ´prizefight´|
|Stuttgart stay good for Pavard, says Reschke|
|You can´t buy class - United boss Mourinho blasts City documentary|
|Cardiff City 0 Newcastle United 0: Penalty miss rounds off abject day for Kenedy|
|Lopetegui open to rotating Real Madrid goalkeepers|
|´World´s best´ Alisson will be difficult to replace, says Roma boss Di Francesco|
|Dragons and Sharks pounce on Panthers after four get sin-binned|
|AC Milan situation has proved FFP works - UEFA president Ceferin|
|Marseille´s Garcia uninterested in striker despite Balotelli link|
|Goodhue sparkles on debut as All Blacks thump Wallabies|
|I feel like chicken tonight - Saunders game for a laugh after Wilder fowl play|
|Aubameyang-Lacazette partnership possible for Arsenal|
|Pant handed debut as India ring changes at Trent Bridge|
|Pochettino pledges to protect Kane|
|Federer relieved to ´hang tough´ in Cincinnati|
|De Bruyne injury: Can Foden or Diaz replace Man City playmaker?|
|Furyk confident as Team USA takes shape|
|Neymar´s behaviour deserves praise, Tite claims|
|Scherzer, Harper lead Nationals past Marlins|
|Djokovic and Federer join Cilic, Goffin in Cincinnati semis|
|Federer outlasts recovering Wawrinka|
|WATCH: Djokovic wins match, loses car|
|Bolt arrives in Sydney for A-League trial|
|Red-hot Bertens beats Svitolina, Halep marches on|
|Snedeker preserves Wyndham lead|
|Halep hits back to torment Tsurenko|
|Raonic fails to break Djokovic stranglehold|
|Emery seeks more ´demanding´ Ozil|
|CAF Champions League Review: Wydad, Al Ahly & TP Mazembe qualify|
|Stephen Curry wants to finish his career with Warriors|
|Hazard among Europe´s best but can improve, says Sarri|
|Tigers boost top-two hopes, Giants close in on fourth|
|Birmingham City 0 Swansea City 0: Monk´s men held despite dominance|
|Inter taking legal action against Tebas over Modric transfer comments|
|Serie A transfer round-up: Zaza joins Torino, Parma sign Gervinho|
|Roma chief Pallotta makes light of De Laurentiis claim|