South Africa levelled their one-day international series with India with a 48-run victory by the Duckworth/Lewis method at Port Elizabeth.
Graeme Smith's side made 265-7 in their 50 overs and then reduced their opponents to 142-6 in 32.5 overs, before rain intervened for the second and final time.
It means the Proteas will head to Centurion on Sunday with the series locked at 2-2 after a fine all-round display at St George's Park.
JP Duminy (71 not out) and Hashim Amla (64) starred with the bat while Lonwabo Tsotsobe (2-25) and Robin Peterson (2-47) were the pick of the bowlers.
Smith won the toss but he and Amla began slowly before accelerating, taking the hosts past 50 in the 10th over.
But the captain soon fell for 18, playing a flat-batted shot towards a diving Harbhajan Singh at mid-off.
Amla and Morne Van Wyk put on 49 for the second wicket with the former reaching his 12th ODI 50 in the process and the Proteas crossing 100 in the 19th over.
Four wickets in quick succession, though, helped India come from behind and take charge of the contest. Van Wyk was first to go for 15 when Virat Kohli held onto a low catch at slip with Yuvraj Singh the bowler.
Seven balls later Amla was needlessly run out whilst attempting a second run to short fine-leg - ending a knock that also saw the opener become the fastest in history to notch 2,000 ODI runs.
He reached the mark in 40 innings, surpassing the previous best by Pakistan's Zaheer Abbas and Englishman Kevin Pietersen (45).
Yuvraj added the wicket of AB de Villiers (three), stumped by Mahendra Singh Dhoni, although umpire Simon Taufel gave it out caught behind, and Kohli completed a fine a passage of play for the tourists when he combined with his captain to run out a hesitant Faf du Plessis (one).
That saw South Africa slump from 106-1 to 118-5 and put them firmly on the back foot, but Duminy and Johan Botha dug in, taking their side past 150 in the 30th over and then raising the 50 stand from 65 balls.
However, Botha was stumped off Yuvraj shortly before the 200 was brought up with nine overs still to go.
Peterson came in and continued the good work before he too was run out, but the home side managed to post a decent target that always looked to be enough.
The Indians lost wickets at regular intervals and although the impressive Kohli made 87 not out they were already struggling when the first rain break intervened.
They lost opener Rohit Sharma (one) in the second over when he slashed Tsotsobe straight to Duminy at backward point.
The left-armer struck again in the 10th over when the recalled Parthiv Patel (11) was trapped leg before wicket, before Yuvraj (12) was excellently caught by Smith, who turned around from slip and threw himself full-length to collect the ball after a mistimed sweep from the batsman.
The visitors were on 49-3 at that stage and Kohli finally managed to find support in Raina as they took the score to 112, when the latter was next man out in the 27th over.
Peterson made the breakthrough when Raina stepped out of his crease and was stumped by AB de Villiers, and the same bowler got the wicket of Dhoni two overs later before the rain came down with India on 137-6.
The target was then revised to 260 and four overs deducted, but only eight more deliveries were possible before the heavens again opened and the hosts were declared winners.