The pair, which got generous help from the fielders dropping at least three catches, added 101 runs in just 68 balls when Shanto was run out for 48 off 40.
Towhid got past fifty before getting dismissed for 55 off just 34 balls with the aid of seven fours and a six. His wicket put the match in the balance as Sylhet needed 59 off 33 balls.
But experienced Mushfiqur Rahim arrived in the crease like a cyclone hitting the ball all around the park. He started the innings with two fours against Karim Janat before taking a single in the final ball of the over.
His onslaught continued next over as Ebadot Hossain felt the heat amid the chilling weather of Dhaka. Musfhiq struck a four, a six and a single in first three balls against the paceman before Zakir Hasan joined the party with back to back boundaries.
Zakir struck another six against Chaturanga de Silva before finally getting caught and bowled by the Sri Lankan but his cameo of 43 off 18 balls tilted the balance to Sylhet’s favour.
Thisara Perera finished the game with a quick fire 20 off just nine balls to navigate his side home with six balls to spare.
Earlier in the day, after winning the toss Barishal made a good start as openers Chaturanga de Silva and Anamul Haque, who scored 36 and 29 respectively, formed an opening stand of 67 off 7.2 overs.
Both the batters however, perished in consecutive overs but Shakib came with all guns blazing to keep the run rate, which was around nine, going.
The southpaw scored seven boundaries and four over boundaries to decimate the opposition bowlers under the floodlights.
Mashrafe Mortaza received most battering as the veteran conceded 48 runs off four overs but he also got must number of wickets-3- including the prize scalp of Shakib, who was dismissed in the first delivery of the final over.
Mahmudullah scored 19 off 12 while Karim Janat remained not out on 17 off 12 balls.