Mahmudullah blasted Bangladesh into the Nidahas Trophy final with a magnificent innings in a highly-charged finish to seal a dramatic two-wicket win and knock hosts Sri Lanka out in Colombo.
There were chaotic scenes in the final over when Tigers captain Shakib Al Hasan called the batsmen to come off the field after Mustafizur Rahman was run out, having failed to make contact with a second successive short delivery from Isuru Udana.
Bangladesh felt a no-ball should have been called, with words exchanged between players from both sides and the umpires before order was restored.
With 12 needed to win off four balls to reach their victory target of 160, Mahmudullah kept his cool to strike a boundary before taking two off the fourth ball, and the all-rounder won it in style by flicking a six over square leg.
There was further tension on the field and Bangladesh coach Courtney Walsh called for calm as his side celebrated setting up a showdown with India on Sunday.
Man of the match Mahmudullah was unbeaten on 43 off only 18 balls after Tamim Iqbal struck 50 from 42 at the top of the order, the Tigers getting home despite collapsing from 92-2 to 148-8.
Kusal Perera (61 off 40) earlier made his third half-century of the series and Thisara Perera (58 from 37) notched his first in the shortest format at international level, but Sri Lanka were denied a place in the final.