Shami struck in the 30th over by breaking a solid first wicket stand. Amla made 65 and shared 152-run partnership with Quinton de Kock.
Earlier, India bowlers were seen toiling against the Proteas openers after their skipper chose to filed first.
Kock got his half-ton in 54 balls while Amla scored his 23rd fifty in 73 deliveries.
India are playing the same side which beat West Indies in the final of a home series last month.
For South Africa, Dale Steyn and Jacques Kallis are back in the side.
Gaining in confidence with every series, India's in-form young batsmen are set to be put through their sternest test of the season against the mighty South Africa.
For Team India, it will be an exercise to reaffirm faith in their young batsmen. This is the same bunch that has been busy lighting up cricket grounds with some breathtaking stroke-play.
Shikhar Dhawan, Rohit Sharma and Virat Kohli, each have scored more than thousand runs in ODIs played this calendar year, each of them averaging over fifty.
Their great run has meant that the Indian batting has started to look top-heavy.
In 31 matches this year, Suresh Raina averages only 36. In 21 matches, Yuvraj Singh has scored at only 21.23.
Along with the inform top-order and below Yuvraj and Raina, is Mahendra Singh Dhoni, who too has maintained his touch this year.
In 23 matches, he averages 66.90. Of course, the small print is that he has been not out eight times. But his conversion rate after getting a start has been good, with four fifties and a hundred.
The hosts will be eager to unleash Dale Steyn, Morne Morkel, Vernon Philander and Jacques Kallis at the first available opportunity.
Both Steyn and Kallis have been included in the squad for this three-match series, after sitting out the third (and last) ODI against Pakistan.
South Africa lost that three-match rubber, a first loss against Pakistan at home. Similarly, India too have never won a bilateral ODI series in South Africa and the Men in Blue will want to take heart from their archrivals' success.
For the Proteas, going up against the top-ranked ODI side, this is a chance to ascertain their own plans in this format after some patchy display in the past year.
India: MS Dhoni (capt), Shikhar Dhawan, Rohit Sharma, Virat Kohli, Yuvraj Singh, Suresh Raina, R Ashwin, Ravindra Jadeja, Mohammad Shami, Bhuvneshwar Kumar, Mohit Sharma.
South Africa: AB de Villiers (capt), Hashim Amla, Quinton de Kock (wk), JP Duminy, Jacques Kallis, Ryan McLaren, David Miller, Morne Morkel, Wayne Parnell, Dale Steyn, Lonwabo Tsotsobe.