Bangladesh edged past Zimbabwe by three runs in another chaotic T20 World Cup final-over thriller at the Gabba on Sunday to keep alive their T20 World Cup semi-final hopes.

Zimbabwe needed five off the final delivery, and the Tigers thought they had claimed victory when wicketkeeper Nurul Hasan stumped Blessing Muzarabani, as both sides shook hands and left the field of play.

But the third umpire called players back on in bizarre scenes with Nurul deemed to have illegally taken the ball before it passed the stumps, with the dismissal overturned and the delivery deemed a no-ball, forcing it to be re-bowled as a free hit, with Zimbabwe needing four for victory.

After the chaos, however, spinner Mosaddek Hossain held his nerve with the ball as Muzarabani swung and missed, to clinch the points for Bangladesh.

Bangladesh captain Shakib Al-Hasan had earlier produced a spectacular direct-hit run out to dismiss Sean Williams for 64 from 42 balls, after he had rescued Zimbabwe from 35-4 to take them within sight of victory.

The Tigers posted 150-7 led by opener Najmul Hossain Shanto with 71 from 55 balls, but Zimbabwe may have restricted them to less if not for poor fielding which cursed them. Richard Ngarava was Zimbabwe's best with the ball, taking 2-24.

More final-over World Cup madness

Zimbabwe needed 16 off the final over from Mosaddek for victory and appeared gone after Brad Evans was caught in the deep by Afif Hossain.

But this World Cup offered another few final over twists, with four leg byes followed by Richie Ngarava's six over fine leg, only to be stumped when the equation was in his favour, needing five off two.

Tigers bowlers prove the difference

Opening bowler Taskin Ahmed (3-19) was named Player of the Match after his spell decimated the Zimbabwean top order, getting both openers inside the first three overs. Taskin also sent down 15 dot balls and bowled a rare maiden, with his three-wicket haul taking him to eight dismissals in the World Cup.

Left-armer Mustafizur Rahman was excellent too with an economical 2-15, but Shakib's decision to bowl him out in the 17th over almost backfired at the death.