"I wish I could be more consistent in the beginning of the game. That's kind of been a problem for me throughout my career," said Bush, who allowed a run in each of the first two innings. "I keep in mind that it's a long game, and definitely with the offense that we have, it's not very often one or two runs is going to beat us. It just gives me the peace of mind to be able to go out inning after inning and try to work in a groove."
J.J. Hardy also homered for Milwaukee, which leads the wild-card chase by 2½ games after St. Louis beat Atlanta. The Brewers are 4½ games behind Chicago in the NL Central after the Cubs lost earlier Friday to Washington.
Bush (8-9) continued his resurgence since a pair of losses in June, and manager Ned Yost has seen Bush's early-inning struggles in another pitcher -- one who has 305 wins.
"I watched Tom Glavine do that for years, give up a run or two in the first. If you didn't get him in the first inning or the second inning, you were done," Yost said. "Bushie's a competitor. He attacks and he competes on that mound. When he's got his stuff going and he's executing, you get what you see tonight."
The quiet right-hander, who was demoted to Triple-A on April 27 before returning five days later, allowed three runs off seven hits to improve to 6-2 in his last 11 starts, going at least seven innings in eight of those appearances. Bush has given up runs in the first or second innings in 15 of his 23 starts this season.
But the Brewers gave him plenty of offense, breaking the game open with a big seventh inning after Bush left, capped by Cameron's two-run homer off reliever Sean Burnett that hit the right field foul pole and made it 10-3. Cameron said it was the third time this season he's homered off the pole.
"Our starting pitchers, they've been giving us an opportunity to stay in the game," Cameron said.
"They really believe in themselves and what they are out to accomplish," Pirates shortstop Jack Wilson said. "You can see it. It's been different the last couple years. You have seen them grow into a very good team with the same players every year. Other than being their opponent, it's been nice to see something we would want here."
Hardy hit his 20th home run of the season to begin the fifth and give Milwaukee a 4-2 lead, after the Brewers scored three times in the fourth to erase a 2-0 deficit.
Pirates starter Zach Duke (4-12) hasn't won since June 9, losing a career-high eight straight decisions over 11 starts. The defense was just as putrid for Pittsburgh, which lost its 10th straight in Milwaukee.
In the fourth, the Pirates committed a pair of throwing errors that led to a two-run double by Corey Hart and a sacrifice fly by Bill Hall.
"Some tricky things happened, and they put the hammer down on me," Duke said.
Pittsburgh opened its 2-0 lead on Ryan Doumit's RBI groundout in the first and Duke's two-out, RBI single in the second. But mixing a fastball with a deceptive offspeed pitch and sinker, Bush settled down and allowed only a long homer to Brandon Moss leading off the seventh.
"That's been exactly what he's been doing," Yost said. "Give up one or two in the first two innings and then get into mow-down mode, one right after another, quick innings, low pitch counts."
Pittsburgh, well on its way to its 16th consecutive losing season, will be a major player in the postseason hopes of Chicago, Milwaukee and St. Louis. Including Friday night's game, the Pirates play 14 of their final 35 games against the three divisional rivals. Milwaukee will see the Pirates eight more times.
"Good teams keep the pedal to the metal, especially this time of year, to everybody that they play," Yost said. "It doesn't matter, they're all the same. They're all capable of beating you every single night."
- Doumit (flu-like symptoms) left the game after the sixth inning. He is day-to-day.
- Pirates 1B Doug Mientkiewicz returned to the Pirates from the bereavement list on Friday after being with his wife, Jodi, who is recovering from heart surgery earlier this week.
- Pirates LHP Tom Gorzelanny is expected to be recalled from Triple-A Indianapolis and start Saturday's game against Brewers RHP Jeff Suppan. Gorzelanny was sent down after a poor performance against the Brewers on July 4.