South Africa 288 for 3 (Malan 91, de Kock 78) beat India 287 for 6 (Pant Pant 85, Rahul 55, Shamsi 2-57) by seven wickets
Paarl: South Africa comfortably chased down 288-run target to register a seven-wicket win against visitors and take an unassailable 2-0 lead in 3-match ODI series at the Boland Park on Friday.
Chasing 288-run target South African openers Quinton de Kock and Janneman Malan gave their side a flying start with de Kock being more aggressive of the two.
With de Kock and Malan scoring 28 runs of the first three overs Indian captain KL Rahul introduced spin as early as fourth over by bringing in Ravichandran Ashwin.
In the eighth over wicket-keeper Rishabh Pant missed a stumping chance of de Kock of Ashwin's bowling.
In same over the Proteas reached the 50-run mark and ended up scoring 66 runs in the first 10 overs of the power play.
Quinton de Kock notched up his 17th ODI half-century in just 36 balls.
Malan-de Kock duo took their team to triple figure mark in the 16th over as de Kock hit a six of Bhuvneshwar Kumar's bowling.
Janneman Malan went on to score his third ODI fifty as Proteas looked on course for chasing the target and winning the series.
The opening partnership was finally broken with Shardul Thakur dismissing de Kock leg before wicket for 78.
Proteas skipper Temba Bavuma who scored a century in the previous match joined Malan and the duo took the team's total beyond the 150-run mark.
Bavuma-Malan notched up a 50-run partnership as hosts looked in complete control and Indian bowlers looked in complete disarray.
The duo Bavuma-Malan duo took South Africa's total beyond the 200-run mark in the 34th over.
India desperately needed a wicket and Rahul introduced Jasrprit Bumrah in to the attack in the 35th over and the pacer got the wicket of opener Malan for 91 breaking the 80-run partnership.
In the next over Yuzvendra Chahal dismissed captain Bavuma caught and bowled for 35 as hosts lost their third wicket as visitors clawed their way back in the match.
Rassie van der Dussen and Aiden Markram then dig in and struck an important partnership to take their team's total beyond the 250-run mark.
Dussen-Markram notched up 50-run partnership as they looked in complete control to take their team beyond the finish line.
The Dussen-Markram pair took the South African team to the finish line with 1.5 overs to spare as both Markram and van der Dussen remained unbeaten on 37 each with the hosts winning the second ODI by seven wickets taking an unassailable 2-0 lead in the 3-match ODI series.
Earlier in the day, KL Rahul won the toss and chose to bat first and he along with experienced opener Shikhar Dhawan gave India a quick start with the southpaw being the more aggressive of the two.
The opening duo of Rahul and Dhawan took India past the 50-run mark in the ninth over.
Skipper Rahul got a life when he was on 8 as he was dropped by Janneman Malan at the gully of Lungi Ngidi's batting.
Spin was introduced by South African Temba Bavuma as early as eighth over by bringing Aiden Markram in the attack.
In his third over Markram gave Proteas the breakthrough dismissing opener Shikhar Dhawan for 29 who played a slog sleep and caught in the deep mid-wicket by Sisanda Magala.
Dhawan-Rahul had put on 63 runs for the opening wicket.
In the next over Team India was dealt with another blow as Virat Kohli was dismissed without troubling the scorers as Keshav Maharaj dismissed him to a soft dismissal caught by captain Temba Bavuma towards the off-side for a five-ball duck.
After Kohli's dismissal, Rishabh Pant joined skipper KL Rahul in the middle.
Pant and Rahul soon were involved in a terrible mix-up and Rahul could have been run out but the South Africans made a mess of it giving India a relief as they could have been three wickets down.
After that the Rahul-Pant duo did not look back started scoring runs at a brisk pace by hitting boundaries as well as rotating strikes and taking India to triple figure mark in the 20th over.
The duo struck a 50-run partnership in quick time and Rishabh Pant outscored his captain.
The hosts desperately needed a breakthrough and Bavuma introduced left arm spinner Tabraiz Shamsi into the attack but Pant welcomed him with consecutive boundaries of his first two balls.
Shamsi gave away 14 runs in his very first over and Rishabh Pant notched up his fourth ODI half-century.
At the score of 46 Rahul got yet another life as he was dropped in the point by Markram of Andile Phehlukwayo's bowling.
In the 27th over India reached the 150-run mark and the Rahul-Pant duo notched up a century partnership. KL Rahul too notched up his tenth ODI half-century.
Pant kept on hitting the boundaries to keep the scoreboard moving and in process went past his highest ODI score of 78.
The 115-run partnership was broken as KL Rahul became the first ODI victim of medium pacer Sisanda Magala caught in the mid-wicket of Rassie van der Dussen. Rahul scored a 79-ball 55.
In the very next over left arm spinner Shamsi was once again introduced into the attack and he got the wicket of dangerous Pant who was caught in the long on by Aiden Markram for his career best 85 of 71 balls hitting 10 fours and two sixes.
Venkatesh Iyer and Shreyas Iyer then came in and took India's total beyond the 200-run mark. Shamsi got his second wicket dismissing Shreyas leg before wicket for 11 with India losing half of its side for 207 in the 37th over of the match.
Shardul Thakur joined Venkatesh after the fall of Shreyas' wicket and the duo steadies India's ship but the 32-run partnership was broken as Andile Phehlukwayo dismissed Venkatesh who was brilliantly stumped by wicket-keeper Quinton de Kock for 22.
Thakur kept on scoring boundaries to keep India's scoreboard moving and also take the total beyond 250-run mark.
Ravichandran Ashwin and Thakur batted well to take India's total to 287/6 in 50 overs.
Thakur-Ashwin put on 48-run partnership for the seventh wicket with Thakur remaining unbeaten on 40 while Ashwin remaining unbeaten on 25.