Indian captain Virat Kohli lamented two crucial errors which effectively cost his team a chance of wrapping up the series in the fourth one-day international against South Africa at the Wanderers Stadium on Saturday.
"You have to take your chances in this game," said Kohli after David Miller escaped twice in one over at a time when India seemed to have taken control.
South Africa chased down a rain-reduced target of 202 in 28 overs with five wickets and 15 balls to spare to keep alive their hopes of sharing the six-match series after losing the first three games.
But the home team's chances looked slim when returning star AB de Villiers was the fourth man out with 100 runs still needed and only 67 balls remaining.
In the next over David Miller, on six, was dropped by Shreyas Iyer at deep square leg off leg-spinner Yuzvendra Chahal. Back on strike in the same over he missed a sweep and was bowled –- only to be recalled when a replay showed Chahal had sent down a no-ball.
Miller went on to hit 39 and shared a quickfire stand of 72 with Heinrich Klaasen, whose 43 not out off 27 balls earned him the man of the match award.
Two weather interruptions played a key role. India were 200 for two, with Shikhar Dhawan on 107 not out when the threat of lightning caused a stoppage after 34.2 overs.
Dhawan added only two runs after the resumption and India lost five wickets for 89 runs to finish with a slightly disappointing 289 for seven.
South Africa were 43 for one after 7.2 overs when lightning, followed by rain, caused a lengthy delay. They came back needing another 159 runs off 20.4 overs.
"It basically became a T20 game," said Kohli. "We did not grab our chances so we did not deserve to win."
Indian spinners Chahal and left-armer Kuldeep Yadav, who took 21 wickets between them in the first three matches, conceded a combined 119 runs off 11.3 overs on Saturday as they struggled to control a wet ball against aggressive batting.
"It was nice to put some pressure on the Indians. The message today was to put fear aside," said South African captain Aiden Markram.
Kohli, the star of a series in which India hold an unbeatable 3-0 lead, played another valuable innings, hitting 75 in a second-wicket stand of 178 with Dhawan. His 83-ball innings took Kohli to 393 runs for a series in which he has only been dismissed twice.
It was the third successive big partnership between Dhawan and Kohli. They put on an unbeaten 93 in chasing down a small target in the second match in Centurion and added 140 in setting up a win in the third match in Cape Town.
This time, though, it was the left-handed Dhawan who made the biggest contribution, hitting his 13th ODI century in his 100th match in the format. His 109 runs were scored off 105 balls, with ten fours and two sixes.