But the match swung in Bangladesh’s favour after both Malan and Buttler got dismissed in consecutive deliveries.
Malan, who made 53 off 47 balls, edged the first the ball of the 14th behind the wicket, where wicketkeeper Liton took a sharp catch.
The very next ball, new batsman Ben Duckett tried to take a quick single. Buttler, who was at the non-striker’s end, was a little late to respond to Duckett’s call. This slight delay cost him his wicket as Mehidy Hasan Miraz picked up the ball from inside the circle and completed a direct hit to send the England skipper back to the pavilion for 40 off 31 balls.
Duckett was then joined by Moeen Ali and the duo kept England’s chase in line, till the 16th over.
Taskin returned to the attack in the 17th over and dismissed both Duckett (11 off 11 balls) and Moeen (nine off 10 balls) to reduce England to 123-5.
Mustafizur bowled a tight 18th over, where he conceded just five runs and in the 19th over Shakib gave away just four runs and took the wicket of Sam Curran (four off six balls).
Hasan Mahmud had 27 runs to defend in the final over. The pacer started the over poorly, getting hit for two fours but Chris Woakes, but then regained his composure and got the job done for the Tigers.
Earlier, Liton and Shanto’s second wicket stand worth 84 runs off 57 balls set up the hosts for a big total, but after that partnership ended, Bangladesh innings lost its momentum.
England bowlers started sloppily but could take heart from the way they closed out the innings, conceding just 27 runs in the last six overs and keeping England in with a chance in the match.
Liton, who had an underwhelming series before the 3rd T20, hit 10 fours and a six in an entertaining innings while Shanto hit his third successive 40-plus knock in the series with the help of one four and a couple of sixes.
England were uncharacteristically sloppy on the field, leaking multiple boundaries owing to misfieldlings and also dropping two catches, one of Rony and the other of Liton and in both occasions pacer Jofra Archer was the unlucky bowler.
Rony, got dropped in the sixth over on 18, with Rehand Ahmed dropping a simple catch.
But the opener couldn’t make good use of his second life, getting dismissed on 24 off 22 balls after miscuing a reverse sweep and hitting straight back to the bowler Adil Rashid, which ended the opening partnership on 55 off 7.3 overs.
Liton got dropped on 51, this time Ben Duckett was the man at fault. Liton made England rue that dropped chance, hitting a boundary and a six in the same over.
England bowlers bounced back in the death overs, with Sam Curran and Chris Jordan conceding just five and three runs respectively in the 16th and 17th over.
The pressure of dot balls got the better of Liton, who tried to pull Jordan for a six but could only hit it straight to Phill Salt.
Shanto and skipper Shakib Al Hasan (four off six balls) then faced the remaining 18 balls in the innings but could only make 19 runs off them.
Earlier, Bangladesh had won the first T20 by six wickets in Chattogram and the second one by four wickets in Dhaka.