Dhananjaya de Silva and Kamindu Mendis both slammed their second century of the match as Sri Lanka set up a 511-run target for Bangladesh before pushing the hosts to the corner in the first Test on March 24 (Sunday).
The visitors were all out for 418 in their second innings at Sylhet, with Mendis making 164 runs to go with his 102 in the first innings and De Silva, who also scored 102 runs in the first innings, adding 108.
Sri Lankan pacers began the victory push immediately, reducing Bangladesh to 47/5 at stumps, with 464 more needed for an unlikely win.
Vishwa Fernando claimed 3/13, while Kasun Rajitha and Lahiru Kumara each claimed a wicket as Mahmudul Hasan (0), Najmul Hossain Shanto (6), Zakir Hasan (19), Shahadat Hossain (0) and Litton Das (0) all departed.
The sorry display from Bangladesh batsmen came when de Silva and Mendis dominated the bowlers for the better part of the day, becoming only the third pair in Test history to score a century in both innings.
The Chappell brothers, Greg and Ian, of Australia achieved the feat against New Zealand in March 1974, before Misbah-ul-Haq and Azhar Ali emulated it against Australia in Abu Dhabi in 2014. The pair, who shared 202 runs in Sri Lanka's first innings total of 280 runs, put on 173 runs together this time.
Mehidy Hasan broke their partnership, before finishing with 4/74 for Bangladesh.
Resuming on 119/5, the visitors lost nightwatchman Fernando (four) early to Khaled Ahmed, before de Silva and Mendis took control. De Silva brought his second century into the game with a single off Mehidy, before he was dropped by Nahid Rana off Shoriful Islam on 101.
Mehidy ensured the drop did not hurt the team more, soon ending de Silva's innings, with Zakir taking the catch at short midwicket. Mendis put away a full toss of Bangladesh captain Najmul Hossain Shanto to bring his own hundred off 171.
Mehidy removed Prabath Jayasuriya, who made 25, and Lahiru Kumara off successive deliveries to give Bangladesh some relief. Mehidy could have grabbed his fifth wicket if Litton Das did not drop Mendis on 133. Mendis protected last man Rajitha to add 52 runs in the final wicket pair, piling misery on Bangladesh.
Mendis hit Taijul Islam for three sixes in an over to reach his 150 and help the lead exceed 500 runs. Taijul dismissed Mendis finally to wrap up Sri Lanka's innings.
Sri Lanka have never lost a Test series to Bangladesh. The second and final match of the series will be played in Chittagong from March 30.
Brief scores:
Sri Lanka 280 (Kamindu Mendis 102, Dhananjaya de Silva 102; Khaled Ahmed 3/72) & 418 (Kamindu Mendis 164, Dhananjaya de Silva 108; Mehidy Hasan 4/74) lead Bangladesh 188 (Taijul Islam 47, Litton Das 25; Vishwa Fernando 4/48) & 47/5 Zakir Hasan 19, Mominul Haque 7*; Vishwa Fernando 3/13) by 463 runs