Respective knocks of 90 and 84 from Mushfiqur Rahim and Naeem Islam had helped the Tigers survive the loss of three early wickets to set New Zealand a daunting target of 266 in the first one-day international in Mirpur - the hosts registering their highest-ever ODI total against New Zealand.
Corey Anderson and Grant Elliott began to put a promising run chase together but, after rain appeared from nowhere to reduce the number of possible overs, Rubel cut through the tail to restrict the visitors to only 162 runs.
After the Black Caps decided to field, Tim Southee struck twice to remove both Tamim Iqbal (five) and Anamul Haque (13), while Mominul Haque was run out to leave the hosts on 25 for three.
Mushfiqur led a spirited Bangladesh revival by scoring 90 from 98 balls before becoming the first of James Neesham's victims. After he had edged behind, Nasir Hossain (one) was skittled by a yorker from Neesham but Mahmudullah then helped Naaem guide Bangladesh over the 200-run line.
Southee grabbed his third wicket as a slower ball tempted Naeem into an early heave which ended up in the hands of Brendon McCullum. The Bangladeshi batsman had managed to score 84 off 115 balls, including 12 fours.
Mahmudullah then went for 29 - edging a dolly to Ross Taylor at third man - as Neesham joined Southee on a three-wicket haul.
That removal sparked a late tumble of wickets with Anderson bowling Sohag Gazi for six, Neesham dismissing Mashrafe Mortaza, also for six, before Abdur Razzak's late rally was curtailed at 12 by Anderson.
Following the resumption, Hamish Rutherford departed with a single after Gazi found his leg stump and Mahmudullah promptly removed senior debutant Anton Devcich for 22 runs.
Taylor (eight) followed after edging Rubel to Mushfiqur before a sudden downpour halted play for over an hour and a half in Dhaka.
New Zealand's innings was reduced to 33 overs on the resumption and their frustrated batsmen responded to the setback in fine fashion, Anderson and Elliott going after the elusive total with a flurry of big hits.
Anderson had plundered four sixes and three fours and was looking for his next big shot when he fell four runs short of his half-century, Rubel crashing the ball into his middle stump.
It was a hugely important wicket and the first installment of a hat-trick as Rubel got both captain Brendon McCullum and Neesham out for ducks.
Elliott had survived, however, and brought up his fifty with a slog over midwicket off Abdur Razzak.
Rubel made Nathan McCullum (10) his fifth victim with Mortaza taking the catch at mid-off and Southee departed for a duck after pulling Razzak to midwicket.
Elliott was finally stopped by Rubel on 71 - including six fours and two sixes - as Mortaza took a brilliant catch.
When last man Kane Williamson was unable to bat due to an injured thumb, Bangladesh's victory was confirmed.