South Africa were 193 for two at tea after deciding to bat on a well-grassed pitch in overcast conditions.
Duminy was on 87 not out, while Amla, playing in his 100th Test, was unbeaten on 50.
The pair added 148 runs after coming together when both opening batsmen, Stephen Cook and Dean Elgar, were dismissed within six balls when the total was on 45.
The left-handed Duminy was the dominant partner as he shepherded a struggling Amla early in the stand.
Also Read
Gradually, though, Amla found his timing and he reached his first half-century in 11 Test matches shortly before tea. He had faced 109 balls and hit seven fours.
Duminy, by contrast, cruised to his half-century off 62 balls with ten boundaries and had faced 127 deliveries, adding three more fours, by tea.
Cook and Elgar survived the first hour before both were out soon after the mid-morning drinks break.
Cook, playing in a Test on his home ground for the first time, was leg before wicket to Sri Lankan captain Angelo Mathews for ten. He sought a review of umpire Bruce Oxenford's decision but was palpably in front of his stumps.
South Africa opted for an all-pace attack and gave a first cap to Duanne Olivier, 24, with left-arm spinner Keshav Maharaj being left out.
Left-arm seamer Wayne Parnell replaced Kyle Abbott, whose contract with Cricket South Africa was cancelled after he revealed he had signed a Kolpak contract to play English county cricket with Hampshire.
Disclaimer: No Business Standard Journalist was involved in creation of this content