De Kock, the 22-year-old left-handed opener, took advantage of a flat pitch to notch up his seventh one-day century — the fourth against India — that lifted the Proteas to 270-7.
India were restricted to 252-6 in reply, despite half-centuries from Rohit Sharma (65) and Virat Kohli, who returned to form with 77, his first substantial knock after 12 barren one-dayers.
The win handed the tourists a 2-1 lead in the five-match series with the last two games to be played in Chennai (October 22) and Mumbai (October 25).
South Africa had won the opening game in Kanpur by five runs and India drew level at Indore with a 22-run victory.
Morkel was supported by spirited fielding by his team-mates in hot and humid weather which tied down the free-stroking Indian batsmen.
Sharma, who hit 150 in a losing cause in the first match in Kanpur, shared a 72-run stand for the second wicket with Kohli after Shikhar Dhawan had fallen for 13.
Indian captain Mahendra Singh Dhoni then put on 80 for the third wicket with Kohli before he was removed by Morkel for 47 with his team still needing 78 off 49 deliveries.
Morkel sealed India’s fate by dismissing Kohli and Ajinkya Rahane off successive deliveries in the 46th over, both batsmen being caught at deep mid-wicket by David Miller.
Suresh Raina fell for a second successive zero, holing out in the deep against leg-spinner Imran Tahir.
Earlier, Faf du Plessis (60) shared a third-wicket stand of 118 with de Kock to lift the tourists to 205-2 in the 39th over when India hit back with three quick wickets to make it 210-5 in the 41st.
Du Plessis, who was caught off a Mohit Sharma no-ball when on 16, was dismissed by the same bowler to a catch at third-man, triggering the slide.
De Kock was run out in the 40th over after a misunderstanding with his skipper AB de Villiers, who was himself given leg-before in left-arm spinner Axar Patel’s next over.
Farhaan Behardien smashed a last-ball six off Bhuvneshwar Kumar to return unbeaten on 33.
Miller, promoted to open the innings with de Kock, scored 33 in a first-wicket partnership of 72 to give the Proteas a sound start, but the Indians kept the run-rate under check.
The Proteas had retained the same team for the third successive match, while India brought in leg-spinner Amit Mishra in place of fast bowler Umesh Yadav.
The one-day series will be followed by four Test matches.
Sep 28, 2016 0
Special coverage on China's Two Party Sessions by The Daily Mail - People's Daily