Fast bowler Lasith Malinga and off-spinner Muttiah Muralitharan grabbed four wickets each as Bangladesh, sent in to bat by Sri Lanka, were dismissed in the first over after lunch off 25.2 overs.
Sri Lanka built on the advantage to reach 154-1 in their first innings before heavy rain ended play 16.3 overs early at the P. Saravanamuttu stadium.
Malinda Warnapura was unbeaten on 79 and Kumar Sangakkara was on 51, the pair having added 113 for the second wicket after Michael Vandort was bowled by Mashrafe Mortaza for 14.
Bangladesh, thrashed by an innings and 234 runs in last week's first Test, fell below their previous lowest total of 86, also against Sri Lanka in 2005.
Malinga, 23, whose distinctive slinging action makes him a dangerous foe, created havoc in the rival ranks by scalping the first four wickets in a hostile opening spell.
The tourists were reduced to 22-4 within the first hour, before Muralitharan (4-14) and third seamer Dilhara Fernando (2-16) polished off the rest of the batting.
Muralitharan moved his career tally to 687 wickets, leaving him just 21 short of equalling retired Australian spinner Shane Warne's world record haul of 708.
Bangladesh, who were bowled out for 89 on the first day of the previous Test, once again found the formidable Sri Lankan attack too hot to handle.
Rajin Saleh's 21 was the top score as none of the other batsmen reached double figures.
Malinga trapped Shahriar Nafees with his fourth delivery and then had the other opener, Javed Omar, caught behind by wicket-keeper Prasanna Jayawardene three overs later.
The tourists slipped further as Malinga removed former captain Habibul Bashar and current skipper Mohammad Ashraful in four deliveries of his fifth over.
Bashar made five when he hung his bat out to an outswinger and was snapped up at second slip by Sri Lankan captain Mahela Jayawardene.
Ashraful fell to the last ball of the over as he flicked hard, but only to see Malinda Warnapura take a blinding catch in front of square leg.
Muralitharan, who came on in the 16th over, was hit for two boundaries by young Mushfiqur Rahim before the prolific off-spinner had him caught behind for nine.
Muralitharan had Mohammad Rafique caught in the deep and then ended Saleh's defiant knock just before lunch.
Sri Lanka retained the team that won the first Test at the Sinhalese Sports Club last week.
Bangladesh made three changes, bringing in Mehrab, seamer Mohammad Sharif and 18-year-old wicket-keeper Rahim.
The trio replaced Khaled Mashud, Shakib-Al Hasan and Abdur Razzak.