South Africa 207 for 5 (Klaasen 47*, Miller 39, Kuldeep 2-51) beat India 289 for 7 (Dhawan 109, Kohli 75, Ngidi 2-52) by five wickets (DLS method)
Scorecard and ball-by- ball details

It was thrill-a-minute at the Bull Ring, testing the mettle of both teams and the nerves of packed crowd. For the longest time, India were dominant, Shikhar Dhawan's 109 leading the way. Then lightning struck, literally, to stop play and allow South Africa some time to regroup. Led by a miserly Kagiso Rabada, they conceded only 92 runs in the last 16 overs and earned themselves a target of 290. That was top work considering the Wanderers rarely entertains ODI chases of less than 300.

And there would be more. Rain reduced the game to 28 overs and South Africa were told they needed 202 to keep the series alive. It was under this pressure - with their two best batsmen already dismissed - that they played shots that were absolutely jaw dropping and won moments that were nothing short of match-changing. At the centre of it all was a newbie.

Heinrich Klaasen, the stand-in wicketkeeper, took a ball of wristspin - you know, the thing that's made South Africa spontaneously combust in this series - from outside the cut strip and pulled it for a one-bounce four to square leg. He then launched a free hit delivery so far into the night sky that it came down with a bit of star dust. An unbeaten 43 off 27 in a highest of pressure scenarios to seal victory is a grand return. "Best feeling in my career," the 26-year old gushed at the presentation.

David Miller, at the other end, was equally destructive. He even one-upped his partner, sending a six so far into the crowd that the ball had to be changed. Clearly, he hasn't taken too well to India making him look like a walking wicket. Ironically, it was after he was bowled neck and crop by Yuzvendra Chahal, off a no-ball, that he unfurled his full and devastating power. By the end of the night, India's wristspinners nursed figures that read 6-0-51-2 and 5.3-0-68-1.

India would feel rather hard done by considering the weather in Johannesburg played a part in spoiling their batting effort in the middle overs and returned later in the day to give South Africa the kind of clarity that they did not seem capable of when playing Chahal and Kuldeep Yadav earlier in the series. It was hit out or get out and with almost nothing to lose, Klaasen and Miller indulged in batting that was very near maniacal. Andile Phehlukwayo was worse. He faced five balls, and walked back with 23 runs, including the winning hit.

Those cameos put the highest scorer of the day wondering what if. Bowlers cramping Dhawan for room is normal in any form of cricket. His abandoning that trademark, off-side dominant game and still managing to be a threat? Not so much. A century on his 100th ODI needs no added frills, not after it came with the addendum that he was the first Indian to do so, but sending out a message that he isn't as one-dimensional as he seems must have felt sweet.

South Africa did not allow him any runs on the cut until the 43rd delivery he faced. He went for the shot often enough, and was lucky to avoid chopping onto his stumps, but eventually decided that there were other ways to score and he was good enough to exploit them. At one point, he was 85 off only 75 balls, with flicks reminiscent of Sanath Jayasuriya and drives - the first one especially - that could fit into a Matthew Hayden highlight reel. Dhawan made 69 runs in the arc from long-on to long leg, and only 21 between long-off and third man.

But with India on 197 for 2 in the 35th over, a break in play for nearly an hour upset the momentum to such an extent that their top-scorer ended up spooning a catch to mid-off seven balls after play resumed. No sooner had Dhawan walked back that Ajinkya Rahane pulled a short ball straight to deep midwicket. Suddenly, two new batsmen were at the crease: Shreyas Iyer, playing his first innings on this tour and MS Dhoni, who needs time early in his innings to be properly destructive.

South Africa recognised their chance, which was a miracle in itself considering Virat Kohli has had them under his thumb this series. He was outstanding on Saturday too, moving to fifth place on the list of top ODI run-getters for India, but his wicket for 75 in the 32nd over, minutes before the weather soured, changed the game.

Rabada had a lower-middle order in front of him. And he turned so very hostile. He didn't care that he held an older ball in his hand, didn't care that it wasn't zipping through as before, he kept digging it hard into the pitch, cramping batsmen and hitting them on the body. His final five overs - bowled from the 33rd to the 49th - cost only 28 runs and yielded only one boundary.

Rabada also took out India's hitter Hardik Pandya - with ample help from Aiden Markram. South Africa's stand-in captain was at cover when a full-blooded slash came his way. He took a split second to position himself, then leapt back, stuck his right hand up and pulled off a screamer that would have had the man he was standing in for - Faf du Plessis - nodding with approval. With Rabada in charge of the final 10 overs, India could scramble only 59 runs. Even Dhoni could only get seven runs off 10 balls in the head-to-head.

South Africa ended the day with a sixth straight victory on pink day, while off the field, 1.6 million Rand was raised to fight breast cancer.

Alagappan Muthu is a sub-editor at ESPNcricinfo