Starlin Castro also added an RBI double for the last-place Cubs, who won just for the third time in 13 games.
Jackson (3-3) had his best outing for the Cubs since signing a four-year, $52 million deal before the 2013 season. The right-hander allowed four hits and walked one. He struck out the side in the first and struck out Elian Herrera to end the fifth for his 10th strikeout. He finished his outing by striking out Jeff Bianchi on 95 mph fastball.
Hector Rondon pitched a perfect ninth for his fourth save in four opportunities.
Milwaukee starter Matt Garza (2-4) was tagged for three runs on four hits. The former Cub had his second straight start that he allowed three runs in the first inning.
The right-hander did rebound by not allowing a hit until a leadoff single by Anthony Rizzo in the sixth inning. He struck out seven and walked one.
Milwaukee leadoff hitter Carlos Gomez was a late scratch from the Brewers' lineup because of lower back tightness. He was due back Saturday after serving a three-game suspension for his actions in a bench-clearing incident against the Pittsburgh Pirates on April 20.
Brewers outfielder Ryan Braun was loudly booed before his first at-bat in the first inning. Braun played in his first game at Wrigley Field since serving 65-game suspension last season for his involvement with the Biogenesis clinic.
The Cubs didn't waste any time testing Garza's fielding ability. Emilio Bonifacio led off the first with a perfectly placed bunt that Garza wasn't able to reach in time to have a chance to throw out Bonifacio at first. Bonifacio later scored on Castro's double. With two outs, Castillo lined a double down the left field line to score Castro and Nate Schierholtz to take a 3-0 lead.
NOTES: Brewers RHP Jim Henderson (shoulder inflammation) is on the DL and scheduled to throw a bullpen session on Sunday. He's eligible to come off the DL Sunday, but no word when he might return. ... Braun is playing with a right oblique strain and is less than 100 percent, but manager Ron Roenicke said he likes having a limited Braun in the lineup because Aramis Ramirez (strained left hamstring) is out. ''With Aramis now out of there, it would be really tough (playing without Braun). And Ryan, he's good even when he's not 100 percent,'' said Roenicke. ... Highly touted Cubs prospect Javier Baez is struggling in Triple-A Iowa. In 29 games, the shortstop is hitting .145 with three home runs and 11 RBIs. He's also committed seven errors.