Shakib Al Hasan and Mahmudullah both made superb centuries as Bangladesh kept their hopes of a Champions Trophy semi-final alive with a stunning five-wicket victory over New Zealand at Cardiff on Friday.

Bangladesh, chasing a modest 266 for victory, had collapsed to 12 for three when left-hander Shakib (114) came in.

And they were not much better off when Mahmudullah (102 not out) walked out at 33 for four.

But their fifth-wicket partnership of 224 -- Bangladesh's highest-ever one-day international stand, surpassing the 178 shared by Tamim amd Mushfiqur Rahim against Pakistan at Dhaka in 2015, turned the match on its head.

Source: b'Mahmudullah was simply brilliant. ICC'

Shakib fell just before the end but when Mosaddek Hossain, who'd earlier justified his recall with three wickets, edged Adam Milne for a four, the Tigers had finished on 268 for five and won with 16 balls to spare.

This was the latest upset in a week of surprises at the Champions Trophy, a tournament featuring the world's top eight ODI sides, after Pakistan's win over top-ranked South Africa and Sri Lanka's defeat of title-holders India, while for Bangladesh it was another memorable triumph in Cardiff following their shock 2005 ODI win over Australia on this ground.

But despite this latest success in the Welsh capital, Bangladesh still need already-qualified England to beat Australia at Edgbaston on Saturday or hope that the match ends -- as both Australia's previous Group A fixtures have done -- in a no result if they are to reach the semi-finals.

Defeat ended New Zealand's hopes of reaching the last four and meant that for the first time in 25 International Cricket Council tournaments (World Cup, World Twenty20 and Champions Trophy), they had taken part without recording a single win.

Feature image source: ICC