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.
|Johnson tells England: Don´t give Scotland ´scent of victory´|
|Zidane offers condolences after Basque police officer´s death|
|FA charge Guardiola over yellow ribbon protest|
|City have to lift titles - Guardiola focused on Wembley glory against Arsenal|
|Spalletti urges Inter to ´believe in our strength´ and end wretched run|
|Best unconcerned with Sexton fitness|
|Christensen a future Chelsea captain, says Conte|
|Fonte leaves West Ham for Dalian Yifang|
|Guardia Civil search Guardiola family´s plane|
|Unwell Neymar facing race to make Le Classique|
|Playing Chelsea means less and less every year, says Mourinho|
|Conte hopes Manchester United bench ´fantastic´ Pogba|
|Dembele ´a genius of football´ like Maradona and Ronaldinho, claims Pochettino|
|Otaegui surges into slender lead in Qatar|
|Villarreal suspend Semedo after attempted murder allegation|
|Jesus could return but Guardiola has doubts over Sterling|
|He took 10 seconds to be ready – Mourinho salutes professional Pogba|
|Alderweireld a doubt as Pochettino stays silent on transfer rumours|
|Conte dismisses Mourinho tension|
|Nothing is decided - Klopp urges against Liverpool complacency|
|Heynckes ´can´t imagine´ Bayern sanctioning Lewandowski sale|
|FIFA closes Neymar´s Barcelona bonus case|
|Bale still important to Real Madrid, Zidane insists|
|Heynckes plays down Robben´s frustration|
|Central Coast Mariners 1 Wellington Phoenix 0: Hosts end 11-match winless run|
|Arsenal handed tough Milan test in Europa League´s round of 16|
|Europa League: Last-16 draw in full|
|I am the lion of the jungle - Wilder ready to pounce on Ortiz|
|Vitolo apologises for sexist ´joke´ after Atletico win|
|Paletta joins Jiangsu Suning|
|Messi, Ronaldo and Neymar are the only superstars, says Pele|
|Rebels capitalise on Higginbotham red, Highlanders beat Blues in thriller|
|Arsenal have ´unfinished business´ in EFL Cup after 2011 loss - Wilshere|
|Srna given 17-month doping ban|
|Winter Olympics 2018: Larocque apologises for silver-medal snub|
|Arsenal boss Wenger backs Wilshere after Keane rant|
|Basque police express ´dismay´ at death of officer after fan violence|
|Jones was alarmed by England´s lack of fitness|
|Wembley hero Ramsey winning race to face Manchester City|
|McLaren launch new-look MCL33|
|EFL Cup final: Bravo and Ospina pitch to be heroes before stepping back into the shadows|
|The Breakdown: A statistical look at round three of the Six Nations|
|EFL Cup final: Wenger aiming for another glorious Wembley outing|
|Ligament damage but no surgery for Lynn|
|Wizards upstage new-look Cavs, Westbrook hits buzzer-beater|
|CONCACAF Champions League Review: Guadalajara poised for quarters, Red Bulls draw|
|Del Potro stunned by Tiafoe at Delray Beach Open|
|Bouchard lawyer satisfied after jury rules against USTA|
|´Enough is enough, we gotta take action´ - Panthers´ Luongo on gun control|
|Former NBA pair help Brazil stay perfect in World Cup qualifying|
|Keane: Wilshere is the most over-rated player on the planet|
|Monfils wins rain-interrupted clash against top seed Cilic|
|Earnhardt says short-track speed skating is ´NASCAR on ice´|
|My knee flared up – Wawrinka reveals reason for retirement|
|Stoger: Dortmund were lucky to survive Atalanta scare|
|Gattuso hopes to continue as AC Milan boss|
|Europa League Review: Arsenal survive scare, Dortmund battle past Atalanta|
|Noren, Simpson share Honda Classic lead after Tiger shoots 70|
|´Complacent´ Arsenal had no ideas, Wenger admits|
|Wilshere pulls no punches after Arsenal´s Ostersunds defeat|
|Batshuayi accuses Atalanta fans of racism|
|Mercedes not responsible for spoiling F1 spectacle, Wolff claims|
|Veteran kicker Vinatieri signs with Colts for further year|
|More injury woe as Wawrinka retires from Open 13 Marseille|
|Villarreal defender Semedo charged with attempted murder|
|West Indies taking nothing for granted in World Cup qualifying|
|Police officer dies after clashes between Athletic Bilbao and Spartak Moscow fans|
|Atalanta 1 Borussia Dortmund 1 (3-4 agg): Returning Schmelzer strikes late|
|AC Milan 1 Ludogorets 0 (4-0 agg): Borini strike secures victory at San Siro|
|Arsenal 1 Ostersunds 2 (4-2 agg): Gunners through despite Emirates shock|