Kusal Mendis remained unbeaten on 166 and combined in a fourth-wicket partnership of 196 with Asela Gunaratne to put Sri Lanka on course for a big first innings total against Bangladesh on the first day of the opening test at Galle on Tuesday.
Sri Lanka reached 321 for four in the first innings at stumps after captain Rangana Herath won the toss and opted to bat in the first of the two-test series against their South Asian rivals.
At close, Niroshan Dickwella was unbeaten on 14 with Mendis.
The hosts got off to a false start when paceman Subashis Roy bowled out opener Upul Tharanga for four, bringing the 22-year-old Mendis to the crease.
Bangladesh also managed to dismiss Dimuth Karunaratne (30) and Dinesh Chandimal (five) to reduce Sri Lanka to 92 for three.
That brought Mendis and Gunaratne together and the duo put the Bangladesh bowling to the sword.
The touring side had their only other success of the day when paceman Taskin Ahmed bowled out the 31-year-old Gunaratne after Bangladesh had taken the second new ball in the 81st over.
It was the second test hundred for Mendis, who hit 18 fours and two sixes in his 242-ball knock.