Kusal Perera scored a maiden test century but partner Kaushal Silva fell six runs short of a ton as an injury-ravaged Sri Lanka racked up 317 for four against Zimbabwe on the first day of the first test on Saturday.
The 26-year-old Perera, in his eighth test appearance, hit 110 off 121 balls, having twice been dropped by the home side, as Sri Lanka dominated the home bowling at the Harare Sports Club in Zimbabwe's 100th test.
Silva was well set to be the first to a century but lost his wicket just after tea when he chopped to mid-on and was caught by Sean Williams off the bowling of Malcolm Waller for 94.
Silva and Dimuth Karunaratne opened with a 123-run stand for the first wicket before Karunaratne (56) was caught off the spin bowling of captain Graeme Cremer.
Cremer also took the wicket of Kusal Mendis (34) with a leg break that was edged and caught behind by wicketkeeper Peter Moor in the last session.
Upul Tharanga (13 not out) and Dhanbanjaya da Silva (10 not out) will resume on Sunday in a bid to build up a large score that might preclude Sri Lanka from having to bat again.
Sri Lanka, who thrashed top-ranked Australia 3-0 in their last series at home in July and August, went into the game without injured captain Angelo Matthews and his deputy Dinesh Chandimal, plus several key bowlers, leaving the 38-year-old spinner Rangana Herath to skipper the side for the first time.
The match is the first of a two-test series and marks Zimbabwe's 100th test since they first played India in 1992. They have won 11 tests in that almost 25-year period.
Sri Lanka 317 for 4
(Kusal Perera 110, Kaushal Silva 94, Karunaratne 56, Cremer 3-82) v Zimbabwe