The middle-order batsman hit one six and four boundaries in his 70-ball 61 to prop up the innings after his team had lost three wickets for 70 runs in the day-night match on Sunday.
The 20-year-old Williams, playing only his sixth match, put on 76 for the fourth wicket with Hamilton Mazakadza, who struck one six and three fours in his 41.
Chamu Chibhabha (31) and opener Stuart Matsikenyeri (25) were the other notable contributors.
Left-arm spinners Mohammad Rafique and Saqibul Hasan, and fast bowler Mashrafe Mortaza grabbed two wickets apiece for Bangladesh, who had elected to field after winning the toss.
Bangladesh lead 1-0 in the five-match series after winning the opening game by nine wickets at Khulna on Thursday.