CHICAGO -- Edwin Jackson wanted to leave the mound on his own terms.
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.
Jackson received a visit from manager Rick Renteria after giving up an 0-2 single to Jean Segura with one out in the seventh, but Jackson persuaded Renteria to let him finish the inning.
"He wanted it. I didn't say a whole lot," Renteria said. "He said, `I got this."
"I definitely wanted to let him know I wanted to finish that inning," Jackson said. "I had just given up an 0-2 hit from not executing a pitch, but I just wanted to let him know I felt good, and I felt confident that I can go out and finish the inning. He heard me, he listen to me, I guess he heard the conviction. I was glad to walk off the field on my own."
That wasn't always the case in 2013 when Jackson lost 18 games.
"I felt comfortable last year, last year, I just didn't get the job done," Jackson said.
Hector Rondon pitched a perfect ninth for his fourth save in four opportunities.
Starlin Castro had an RBI double for the last-place Cubs, who won just for the third time in 13 games.
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.
Garza said he did not have extra adrenaline in his first start at Wrigley since being traded by the Cubs last season to the Texas Rangers.
"Nope. I told you guys the first time; it's just another game," Garza said. "It stinks the way it turned out, but there's no more or less emotion. Every time I go out there I go out there the same way."
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 drug scandal.
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.
"Of course, I'm frustrated, man," Garza said. "What do you think, I'm happy? It's the worst freaking start of my career, dude. Yeah, I'm frustrated. I hate this, this feeling.
"So it's keep grinding and keep getting ready every five days. That's about all I can do," he said.
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.