Opener Soumya Sarkar hit 169 off 151 balls Wednesday as his superb innings helped Bangladesh recover from losing early wickets to reach 291 all out in the second one-day international against New Zealand.
New Zealand are 1-0 up in the three-match ODI series after a 44-run win in the opener last Sunday in Dunedin.
Bangladesh hope to level the series by ending a miserable streak, having lost all their 17 previous 50-over matches on New Zealand soil.
After being bowled for a duck in Dunedin, Sarkar bounced back in Nelson to pepper the boundary with 22 fours and two sixes.
It was the second-highest ODI tally by a Bangladesh batter, just short of the 176 Litton Das scored against Zimbabwe in March 2020.
Sarkar held his nerve as the Black Caps bowlers struck hard, taking three early wickets. Seamer Jacob Duffy claimed two for just 15 runs when he had Bangladesh captain Najmul Hossain Shanto and Litton Das caught.
With Bangladesh wobbling at 44-3, Sarkar steadied the ship alongside Towhid Hridoy to steer the visitors to 80-4 for the fourth wicket.
Sarkar hit out during a lucrative partnership with veteran batter Mushfiqur Rahim for the fifth in a 91-run stand.
They pushed Bangladesh out to a respectable 171-5 after 34 overs before Rahim edged his shot into the gloves of New Zealand wicketkeeper Tom Blundell.
Just before claiming his third century in ODI cricket, Sarkar lived dangerously when his skied shot was fumbled by Will Young at point.
Sarkar belted consecutive fours in the 43rd over as New Zealand debutant Adithya Ashok took his first ODI wicket when he had Mehidy Hasan Miraz caught.
The stunning knock inspired Sarkar's teammates, including debutant Rishad Hossain, who hit a six with his first shot in ODI cricket.
Sarkar finally departed in the 49th over when seamer William O'Rourke had him caught behind, the first of three wickets the New Zealand bowler took in the final six balls.