Tillakaratne Dilshan smashed an unbeaten 161 off 146 balls and Kumar Sangakkara marked his 400th one-dayer with a century as Sri Lanka whipped butter-fingered Bangladesh by 92 runs in the World Cup on Thursday.
Sri Lanka, who were dismissed for 233 by New Zealand and then struggled to chase down Afghanistan's 232, finally came good with the bat after electing to take first strike.
Dilshan and Sangakkara, who hit 105 not out in his landmark match, lifted the Islanders to a mammoth 332 for one that proved too hot to chase for Bangladesh, who folded up for 240 with three overs to spare.
Sri Lanka were helped along by a shoddy fielding display by Bangladesh, whose maiden appearance at the iconic Melbourne Cricket Ground was marred by five missed chances.
Dilshan put on 122 for the first wicket with Lahiru Thirimanne (52) and an undefeated 210 for the second with Sangakkara, who added two catches and a stumping to his 22nd one-day century.
Sangakkara, 37, became only the fourth cricketer - and the third Sri Lankan after Sanath Jayasuriya (445) and current team-mate Mahela Jayawardene (444) - to play 400 one-day internationals.
The list is headed by retired Indian star Sachin Tendulkar with 463 ODIs.
Dilshan compiled one-day cricket's highest individual that did not contain a six - he hit 22 fours - as he anchored the innings to carry his bat in front of some 30,000 spectators.
Left-handed Thirimanne survived three missed chances in his half-century which followed his 65 in the tournament opener against New Zealand.
Anamul Haque spilled a waist-high catch in the first over off Bangladesh captain Mashrafe Mortaza, who then had an edge go past the wicketkeeper and first slip when Thirimanne was on 22.
The batsman moved to 44 when Mushfiqur Rahim missed a stumping off Sabbir Rahman, but Thirimanne's luck ran out as an airy cut off seamer Rubel Hossain was snapped up by third man.
Sangakkara had made only 23 when he top-edged a short ball from Taskin Ahmed, but the ball spilled out of the bowler's hand as he dived forward to hold the catch.
Sangakkara completed his 94th one-day 50 by sweeping Shakib Al Hasan for his eighth boundary, but escaped a second time soon after when Mominul Haque dropped a catch at point off Rubel.
The 37-year-old reached his century in the final over to complete a total domination by the Sri Lankan batsmen of the Bangladeshi attack.
Bangladesh lost flamboyant opener Tamim Iqbal off the second ball, bowled by Lasith Malinga, and slipped to 41 for three by the seventh over.
Anamul's misery in Melbourne mounted when, after making a stroke-filled 29, he charged down the wicket for a non-existent single and was run out by a direct throw from Sri Lankan captain Angelo Mathews.
Sabbir Rahman top-scored with 53 and Shakib made 46 during a sixth-wicket stand of 64 with Rahim, but their effort came too late to cause a dramatic change of fortunes for Bangladesh.
Malinga finished with three wickets, with Suranga Lakmal and Dilshan claiming two each.
Sri Lanka brought in batsman Dinesh Chandimal in place of all-rounder Jeevan Mendis, who was ruled out of the tournament with a hamstring injury.
Bangladesh retained the same side that defeated Afghanistan in their first game. Their match against co-hosts Australia was washed out.
Sri Lanka, who have four points from three games, take on England next in Wellington on Sunday. Bangladesh, left with three points from as many matches, play Scotland in Nelson on March 5.
Scorecard: Sri Lanka vs Bangladesh
Bangladesh: Mashrafe Mortaza (captain), Tamim Iqbal, Anamul Haque, Mominul Haque, Mushfiqur Rahim, Sabbir Rahman, Shakib Al Hasan, Mahmudullah, Soumya Sarkar, Taskin Ahmed, Rubel Hossain.
Sri Lanka: Tillakaratne Dilshan, Lahiru Thirimanne, Kumar Sangakkara, Mahela Jayawardene, Dimuth Karunaratne, Angelo Mathews (captain), Dinesh Chandimal, Thisara Perera, Rangana Herath, Lasith Malinga, Suranga Lakmal.