MILWAUKEE -- Prince Fielder has plenty of power -- when he gets to show it.
Fielder went 1-for-1, with three walks coming after his homer in the second inning.
"With the number of right-handed hitters that we do have, he's going to be pitched tough all the time. The best thing to do in that situation is just get on base," Brewers manager Ken Macha said. "By walking, you're going to contribute to the team winning."
Said Cameron: "Did you see that first ball he hit? I wouldn't throw to him, either."
But Brewers starter Dave Bush gave up solo homers to Mark Reynolds, Justin Upton and Miguel Montero in the seventh before Milwaukee regrouped. Chris Duffy hit an RBI groundout in the eighth two batters after Fielder walked again, and Trevor Hoffman closed it out.
"Right there, I felt nothing like a pinch hitter," Duffy said. "I'm going to be excited about today and smile a little bit. You wouldn't have caught me smiling yesterday."
Duffy, who went 0-for-4 in his third start on Saturday, was in as a defensive replacement for Brad Nelson. The two have been sharing time in left field because Ryan Braun (back) missed his second straight game.
Cameron hit a flare single to right that loaded the bases and Duffy grounded out hard to second baseman Felipe Lopez, who needed to dive and could only make a play at first as Hardy scored.
Mitch Stetter (1-0) pitched a perfect eighth and Hoffman earned his third save this season with a clean ninth.
Arizona rallied in the seventh against Bush, who had allowed three baserunners over his first six innings and struck out seven. The Diamondbacks, hitting a major league-low .232 entering Sunday's game, tied it on back-to-back homers by Reynolds and Upton, and Montero's two-out shot.
"We hit some home runs. We just don't string enough hits together right now," Diamondbacks manager Bob Melvin said. "All three games here we've come back, the last three. So we're starting to swing it better at opportune times."
It was Upton's second homer in two games. The 21-year-old former No. 1 overall draft pick has hit in 10 straight with four homers and 11 RBIs during that stretch.
The Brewers had gone three games without a homer, their longest drought since September 2005, before Fielder hit one leading off the second against Petit. Cameron took Petit's next pitch over the wall in left for his 1,500th career hit.
"[Jason Kendall] told me it's a compliment of being good -- and being old," Cameron said of the milestone.
The Brewers made it 3-0 in the fifth on Hart's RBI single off Petit, who has replaced injured Diamondbacks ace Brandon Webb (shoulder) in the rotation and hasn't won yet in four starts.
But Milwaukee couldn't tack onto the lead with runners on the corners and no outs in the sixth after Arizona reliever Tom Gordon made an out at the plate and injured his left hamstring.
Gordon's pitch to Cameron went to the backstop, but he caught the throw from Montero and made the tag at the plate, falling to the ground after Weeks slid into him. Gordon had to be helped off the field.
"My leg really hurt me. Good thing is it's still on my body," said Gordon, who expects to be placed on the 15-day disabled list. "I worked so hard on the elbow, worked so hard on rehabbing, coming back from surgery and for something else to happen it kind of gets you down a little bit."
Macha said he hid in the bathroom when Hoffman took the mound to start the ninth. Hoffman had earlier complained in jest that his AC/DC entrance music wasn't loud enough, causing the sound crew to crank it up the last two appearances. "That baby is so loud, you should have OSHA investigate that," Macha joked. ... It was Braun's bobblehead day, celebrating the two-run homer he hit on the final day last season to lift Milwaukee to its first postseason appearance in 26 years.