A revised target of 206 runs in 33 overs in the rain-interrupted match proved to be too much for New Zealand as it was bowled out for 163, with Rubel taking 6 for 26.
In response to Bangladesh's 265, New Zealand was 82 for 3 in 20 overs when rain stopped the game for almost two hours. When play resumed, the target became 124 off 78 balls, and Corey Anderson hit some lusty shots before Rubel turned the match on its head with a hat-trick.
Rubel bowled Anderson (46) before taking the wickets of Brendon McCullum and James Neesham to achieve the hat-trick in his third over. While McCullum was caught by Shamsur Rahman, Neesham looped a catch to Mushfiqur Rahim, the wicketkeeper, down the leg side as Rubel became the third Bangladeshi to complete a hat-trick in an ODI.
Rubel had earlier dismissed Ross Taylor and then snared Nathan McCullum and Grant Elliot (71), equalling the record of Mashrafe Mortaza for the best-ever ODI bowling figures for Bangladesh. Mashrafe, who took 6 for 26 against Kenya at Nairobi in 2006, took the catch of Elliot, the last man out for New Zealand. Kane Williamson was unable to bat after suffering a thumb injury.
Mushfiqur and Naeem Islam had earlier hit fifties to set up a healthy total after New Zealand captain McCullum won the toss and elected to field. The duo added 154 for the fourth wicket to help Bangladesh recover from a worrisome 25 for 3. Although Naeem took 17 balls to get off the mark, he grew in confidence to hit a career-best 84 off 113 balls.
Naeem, who was drafted into the playing XI after Shakib Al Hasan was admitted to a hospital with dengue fever, hit 12 fours to reach his fourth ODI fifty. Tim Southee ended Naeem's innings when he forced an edge to the wicketkeeper.
Mushfiqur hit 90 off 98 balls, studded with eight fours and two sixes before he fell to Neesham.