Christopher Morel reached on an error to open the inning, and Mike Tauchman followed with a walk. Both runners advanced on Nico Hoerner's sacrifice bunt, but Morel was then cut down at the plate when Ian Happ hit a sharp grounder to first with the infield drawn in.
With runners on the corners, Bellinger grounded a ball off reliever Joel Payamps' foot, allowing the winning run to score.
Bellinger committed a throwing error that allowed Andruw Monasterio to reach first leading off the ninth, but Adbert Alzolay (2-4) got Christian Yelich to ground into a double play before working around a walk to secure the win.
Payamps (4-4) took the loss.
Cubs starter Kyle Hendricks was in line for the win after allowing one unearned run through six innings, but Milwaukee rallied in the eighth.
With two outs, Sal Frelick singled and stole second before Willy Adames and Rowdy Tellez walked to load the bases. Alzolay entered in relief and plunked Mark Canha to force in a run as the Brewers drew even at 2-2.
Chicago had built a 2-0 lead in the first thanks to Happ's RBI double and a sacrifice fly from Dansby Swanson.
Yelich opened the third with an infield single, advancing to second on the play when Hendricks' errant throw to first ended up in the stands. William Contreras followed with a run-scoring single to pull Milwaukee within 2-1.
The Brewers looked poised to draw even in the fifth after Contreras walked and stole second with two outs.
Carlos Santana then sent a grounder up the middle, but second baseman Hoerner made a diving stop to keep the ball in the infield. Contreras had to hold at third, and Hendricks struck out Frelick to escape the jam.
Milwaukee starter Brandon Woodruff gave up two runs on two hits in six innings.
—Field Level Media