South Africa's win gave them an unassailable 2-0 lead in the three-match series, being played in honour of former South African president Nelson Mandela who died on Thursday aged 95.
The game was reduced to 49 overs a side but de Kock (106 from 118 balls) and Amla (100 from 117 balls) lifted the atmosphere with a magnificent 194-run opening stand that helped the home side reach 280 for six having been inserted by India.
India never recovered from a poor start, slipping to 34 for four in the ninth over, as the South African fast bowlers found life in the pitch that visitors could not. India were bowled out for 146 in 35.1 overs.
The 20-year-old de Kock showed more of his prodigious talent, following up his century in the first match at the Wanderers on Thursday with another entertaining ton, even if this one was less fluent on a slower pitch.
Amla became the fastest player to reach 4000 one-day international runs when he took his score to 59, passing the milestone in his 84th match (81 innings), improving the previous best of West Indian great Viv Richards who took 96 matches (88 innings).
Mohammed Shami was again the pick of the Indian bowlers, with three for 48 in eight overs.
Only Suresh Raina (36) offered any real resistance, the India batting line-up skittled for a below-par score for the second time.
Lonwabe Tsotsobe was the pick of the home bowlers with figures of four for 25 and Dale Steyn was also in top form with three for 17 in seven overs.
South Africa won the first match in Johannesburg by an equally crushing 141 runs and the teams now head to the third game in Pretoria on Wednesday.