Bangladesh, sent in to bat at the P. Saravanamuttu stadium, slumped to 22-4 within the first hour of the first session before being bundled out for paltry 62 just after lunch when Murali castled Shahadat Hossain.
Malinga claimed the first four wickets before third seamer Dilhara Fernando (2-16) and off-spinner Muttiah Muralitharan (4-14) combined to wreck the lower order.
Malinga, 23, whose distinctive slinging action makes him a dangerous foe, created havoc in the Bangladesh ranks with a hostile opening spell.
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.
Debutant all-rounder Mehrab Hossain lasted only 15 deliveries before he was bowled by Fernando after punching the previous delivery for a four.
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.
Fernando claimed his second wicket when Mashrafe Mortaza edged a catch to Mahela Jayawardene in the slips as Bangladesh plunged to 48-7.
Muralitharan had Mohammad Rafique caught in the deep before ending Rajin Saleh's defiant knock of 21 just before lunch.
Sri Lanka retained the same team that won the first Test by an innings and 234 runs 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.
Brief Scores (at lunch, D-1):
Bangladesh Ist innings 62 all out (Rajin Saleh 21; Malinga 4 for 25, Murali 4 for 14, Fernando 2 for 16) Vs Sri Lanka.