New Zealand's Tim Southee attempts to run out Bangladesh's Shakib Al Hasan. Photo: Reuters

CARDIFF - Shakib Al Hasan and Mahmudullah both made superb centuries as Bangladesh completed a stunning five-wicket win over New Zealand that kept alive their hopes of reaching the Champions Trophy semi-finals.

Bangladesh collapsed to 33 for four chasing a modest 265 for victory after Tim Southee removed all their top three batsmen.

But left-hander Shakib (114) and Mahmudullah (102) turned the tide with a stand of 224 – Bangladesh's highest one-day international partnership for any wicket, with this result ending New Zealand's bid to reach the last four.

Now Bangladesh must hope that tournament hosts England beat Australia in the final Group A match at Edgbaston on Saturday if they are to go through to the semi-finals.

A win for Australia would see them join already-qualified England in the last four and knock out Bangladesh.

But if Saturday's match, as has happened twice to Australia already this tournament, ends in a no result washout it will be Bangladesh who go into the semi-finals.

Earlier, Ross Taylor (63) and New Zealand captain Kane Williamson added 83 for the third wicket before the Blackcaps suffered a middle-order collapse.

Off-spinner Mosaddek Hossain justified his recall with three for 13 in three overs while placeman Taskin Ahmed, also brought back for this match, took two for 43 in eight overs.

Brief scores

New Zealand: 265-8, 50 overs (R Taylor 63 K Williamson 57; Mosaddek Hossain 3-13)

Bangladesh: 268-5, 47.2 overs (Shakib Al Hasan 114, Mahmudullah 102 no; T Southee 3-45)

Result: Bangladesh won by five wickets