Having bowled out Bangladesh for 89 on the opening day, Sri Lanka went to tea on the second day at 459-6 with a declaration looming in the final session.
Prasanna Jayawardene (57 not out) and Chaminda Vaas (46 not out) were at the crease after adding 105 runs for the seventh wicket on an easy-paced wicket at the Sinhalese Sports Club.
The run deluge followed centuries by lanky opener Michael Vandort and skipper Mahela Jayawardene earlier in the day against a tiring Bangladesh attack that lacked fire.
Left-handed Vandort, a late replacement for the injured Upul Tharanga, hit 117 with the help of nine boundaries and three sixes.
Jayawardene, who had retired hurt the previous day on 93 due to leg cramps, returned at the fall of Vandort's wicket before lunch and duly completed his 17th Test century.
The captain, who was on 126 at lunch, added just one more run when he fell to the second new ball, punching Mashrafe Mortaza's fourth delivery to Abdur Razzak at point.
Jayawardene, 30, took over as Sri Lanka's second-highest scorer with 6,416 runs in 86 Tests, behind only Sanath Jayasuriya's record tally of 6,791.
There was, however, no respite for the Bangladeshis as wicket-keeper Prasanna Jayawardene struck his maiden half-century and Vaas lashed out at the other end.
Vandort, who resumed at his overnight score of 87, hit two consecutive sixes off left-arm spinner Abdur Razzak to move to 99 and then clipped two runs to mid-wicket in the same over to reach his third Test century.
Vandort put on 117 for the fourth wicket with Tillakaratne Dilshan when he was caught in the leg trap by Shahriar Nafees off spinner Mohammad Rafique.
Bangladesh earned a lucky break when Dilshan was run out for 79 after Mahela Jayawardene declined his call for a second run.
Bangladesh face an uphill struggle to avoid defeat in the match by batting a major part of the remaining three days.
Mohammad Ashraful's men lasted just 32.3 overs on the first day with Muttiah Muralitharan taking five wickets for 15 runs after seamer Dilhara Fernando had destroyed the top order with three wickets.
Bangladesh play three Tests and as many one-day internationals on the five-week tour.