PHOENIX -- Josh Collmenter went eight innings and gave up three hits, only one of which made it to the outfield. He retired 21 of his final 22 batters in his longest outing of the season, the only blip in that stretch a bunt single.
"I think today was the culmination of everything that I can do as a pitcher," the rookie right-hander said. "I really had everything working, mixing it in and out. Henry (Blanco) behind the plate was great, moving in and out, up and down, changing speeds. Just kept them off balance."
Collmenter (5-5) struck out a career-best seven and walked none while running his scoreless streak to 14 innings, all against the Brewers over his last two starts. Ryan Roberts homered for the second straight day and David Hernandez finished for his ninth save in 11 chances, wrapping up the game in an efficient 2 hours, 14 minutes.
Collmenter baffled the Brewers again with his unorthodox overhanded pitching style that he says he learned throwing tomahawks as a kid in rural Michigan, adding an occasional curveball to his usual mix of fastballs and changeups, all thrown with pinpoint precision.
"It is his deception. He is a good little pitcher," Milwaukee center fielder Nyjer Morgan said. "It is one of those things we don't really know him yet."
Collmenter was 0-4 with a 5.97 ERA in his last five starts. His previous victory came on June 3 against Washington, when he pitched seven innings in Arizona's 4-0 victory. But in his last start, he pitched six innings and got a no-decision in the Diamondbacks' 3-1 loss at Milwaukee.
"It's definitely good to get back on track on the last one before the (All-Star) break and now this one coming out of the break," he said, "and kind of give our rotation momentum as we kind of turn things over each time."
Randy Wolf (6-7) pitched 7 1/3 innings for Milwaukee and was charged with three runs, two earned, and eight hits. The left-hander is 0-3 with a 4.94 ERA in his last four starts, including two losses against the Diamondbacks.
"I did everything I could do," Wolf said. "I made a mistake but that happens. I did my job to the best of my ability."
The Brewers were shut out on the road for the ninth time this season and fell to 18-32 away from Miller Park.
Chris Young singled, doubled and scored twice for Arizona.
Roberts hit a two-run shot to left to put Arizona up 3-0 in the sixth. Young doubled into the left-field gap with two outs, then Roberts hit Wolf's 1-0 pitch into the seats in left for his 13th homer.
Roberts flew out to deep left his first time up.
Arizona loaded the bases with no outs in the third without getting the ball out of the infield. Blanco singled off the glove of second baseman Rickie Weeks, then Wolf threw the ball away trying to force Weeks at second on Collmenter's sacrifice attempt. Wolf threw right at second base umpire Brian Runge rather than at Weeks.
Willie Bloomquist's sharp shot off the glove of first baseman Prince Fielder loaded the bases, but the Diamondbacks got only an unearned run out of the situation when Blanco scored on Gerardo Parra's double-play grounder.
Morgan made two big catches, leaping against the wall to take an extra-base hit away from Justin Upton in the sixth, then a diving shoestring grab to rob Blanco in the seventh.
Bloomquist, playing at shortstop to give Stephen Drew the night off, saved a run in the first when he made a diving stop to his right on Fielder's bouncer and, from his knees, threw out Morgan trying to score from second.
Hernandez has converted seven consecutive save opportunities since closer J.J. Putz went down with a sore elbow. ... There was dust in the air at first pitch, the result of a severe dust storm that moved through downtown Phoenix. ... In addition to Drew, fellow regulars 2B Kelly Johnson and C Miguel Montero were out of the Arizona lineup. ... The Chase Field fans kept up the booing of Fielder that began in the Home Run Derby after the slugger failed to pick Upton for the NL team. Fielder went on to win the All-Star Game MVP award.