Karunaratne hit 71 and Silva made 80 before both batsmen retired at the end of the 45th.
Karunaratne hit 71 and Silva made 80 before both batsmen retired at the end of the 45th over of the touring team's only warm-up match before the first of three Tests against South Africa, starting in Port Elizabeth on December 26.
The Sri Lankans finished the day on 328 for six after winning the toss and batting on a batsman-friendly pitch.
Kusal Mendis and Dhananjaya de Silva also hit half-centuries against a youthful Invitation XI bowling attack.
De Silva provided the day?s most attractive batting, reaching a half-century off 43 balls with four fours and two sixes.
The only disappointment for the touring team was the dismissal of captain Angelo Mathews, who was caught behind without scoring off left-arm spinner George Linde.
The left-handed Karunaratne and right-handed Silva both showed good form, with Karunaratne making his runs off 127 balls with ten boundaries, while Silva faced 145 deliveries and hit 11 boundaries.
Both batsmen were officially recorded as 'retired out' despite not being dismissed by a bowler.
Linde, who replaced Test off-spinner Dane Piedt in the Invitation team, was the most successful bowler, taking two for 72.