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.
|Ohtani says he´s not good enough for Home Run Derby yet|
|Mendy: France are eyeing World Cup glory|
|Scott accepts two-week ban for Walker punch|
|Braves rally for six runs in the ninth to defeat Marlins|
|MLS Review: Red Bulls upstage Atlanta thanks to Wright-Phillips brace|
|Warriors breeze past Rockets in game three|
|We have a quality squad – Man City chairman hints at caution in transfer market|
|Wise cruises to maiden PGA Tour victory at Byron Nelson|
|Matic: United can fight for Premier League and Champions League with experience|
|Golden Knights GM on Stanley Cup Finals berth: I don´t know how we did it|
|I did a ´s*** job´ defending LeBron James – Morris|
|Dembele suffers sprained right ankle|
|We know Fellaini´s not going to renew with United – Mirabelli suggests Milan move|
|Cavs´ Lue not satisfied with just one win|
|They even whistled at Torres – Simeone backs Griezmann|
|I arrived as a boy, I leave as a man – Iniesta in emotional Barcelona farewell|
|Lingard: Wembley loss my worst feeling in football|
|Cahill: Conte uncertainty affecting Chelsea|
|Sarri has run out of time – Napoli chief De Laurentiis|
|Barca boss Valverde salutes departing Iniesta|
|I feel like I´ve been run over by a truck or had 15 pints - Crutchlow|
|Four sent off as Ajaccio win chaotic Le Havre play-off on penalties|
|Sweden win shoot-out to retain world title|
|De Vrij penalty was destiny for Inter - Icardi|
|PSG? Maybe one day - Pogba coy over long-term future at Manchester United|
|Messi wins fifth European Golden Shoe|
|Gattuso calls for more malice at Milan|
|Barcelona 1 Real Sociedad 0: Coutinho stunner lights up Iniesta´s farewell|
|Lazio 2 Inter 3: Spalletti´s men seal Champions League qualification with stunning comeback|
|Royals reach play-offs as Kings XI come up short|
|Nadal sees clearly after Rome rain is gone|
|Double whammy for Zverevs as Mischa bows out in Geneva|
|Atletico Madrid pay fitting tribute to tearful Torres|
|Hull FC claim derby spoils, Dragons off the bottom|
|Buzarnescu battles through as McHale impresses in Nuremberg|
|Neymar an artist who will not need special treatment - new PSG coach Tuchel|
|Atletico Madrid 2 Eibar 2: Torres bows out with a double|
|Napoli 2 Crotone 1: Milik and Callejon condemn visitors to the drop|
|Iniesta starts on Barcelona goodbye but Messi rested|
|Nadal rallies after rain break to dethrone Zverev in Rome|
|AC Milan 5 Fiorentina 1: Cutrone brace secures Europa League group stage spot|
|I think I made a fantastic decision - Garoppolo key to Sherman joining 49ers|
|FIFPro appeals to FIFA over Guerrero World Cup ban|
|Neymar made mistake joining PSG - Rivaldo|
|Simple for Simon as outstanding Yates extends Giro advantage|
|Ulster qualify for Champions Cup as Biggar makes history|
|Neymar tired of rumours and staying at PSG, president Al-Khelaifi claims|
|Beaten Halep calms injury concerns ahead of French Open|
|Van der Vaart´s Midtjylland nightmare set to end|
|It has been a crazy ride - Klopp proud of Liverpool ahead of Champions League showdown|
|Raonic pulls out of French Open|
|Liverpool youngster Alexander-Arnold not overwhelmed by England call-up|
|Torres captains Atletico Madrid on farewell|
|Otaegui claims second European Tour win at Belgian Knockout|
|Green: Warriors play best when we feel threatened|
|Daredevils dump out defending IPL champions Mumbai|
|Fan shows off Monk face tattoo on bottom|
|Bayern Munich chief Hoeness rules out spending spree|
|Fury to take on Albanian Seferi in Manchester next month|
|Mourinho mind games won´t distract from Manchester United´s paused progress|
|My motivation is intact - Ranieri open to offers following Nantes exit|
|Shields would probably have made All Blacks squad - Hansen|
|Willian fuels rift talk by hiding Conte with emojis in cup photo|
|Marquez extends lead at Le Mans as Dovizioso crashes again|
|Top-six mentality a boost to England´s World Cup hopes – Southgate|
|Dominant Svitolina retains in Rome as Halep sustains injury scare|
|I´d play for free! - Fifita desperate for State of Origin call-up|
|Plea satisfied with Nice exit as big changes beckon|
|Boateng open to leaving Bayern for move abroad|
|Napoli slam ´shameful and offensive´ Juventus celebrations|