South Africa claimed a fourth successive ODI victory over India as they kick-started their three-match series with a nine-run win in Lucknow, despite Sanju Samson's efforts.
With rain reducing the match to 40 overs per innings, India won the toss and put the tourists into bat on Thursday.
Despite a flurry of wickets between the 13th and 16th overs, with Shardul Thakur (2-35) the pick of India's bowlers, Heinrich Klaasen and David Miller remained unbeaten on 74 and 75 respectively to guide the Proteas to 249-4.
Quinton de Kock scored 48 from 54 deliveries before being dismissed by Ravi Bishnoi, but Miller and Klaasen combined for a 139-run partnership to see out the innings.
Wayne Parnell and Kagiso Rabada set about damaging India's response, with Shubman Gill and Shikhar Dhawan falling inside the opening six overs.
More quickfire losses followed for India in the 17th and 18th overs – Ruturaj Gaikwad stumped and Ishan Kishan caught out – but the hosts had won their last seven ODIs and had resistance in them.
Shreyas Iyer's 50 included eight fours, before he was dismissed by Lungi Ngidi (3-52), yet with Samson, India had hope.
The wicketkeeper struck an unbeaten 86, leading a team flurry of 63 runs off the final five overs. The onslaught ultimately came too late, though.
Samson's stand not enough
India's wicketkeeper batted superbly, striking 12 boundaries in a career-best innings and holding firm against South Africa's deadly attack. He had decent support from Shardul Thakur (33), though in the end could not carry the tail through.
South Africa have not lost to India in a bilateral ODI series since February 2018, and the rest of the hosts batters must show similar levels to Samson if they are to end that run.
Klaasen and Miller the difference
With India's bowlers failing to perform at their best – Mohammed Siraj failed to take a wicket and Bishnoi was particularly expensive, conceding 69 runs – it still took some fine batting from South Africa's sixth-wicket pair to clinch victory.
Between them, Klaasen and Miller hit 16 boundaries, including five sixes, to ultimately take the game away from India.