MILWAUKEE (AP) -- Ben Sheets was shaky, and Pittsburgh did everything it could to wear him out.
The Pirates just couldn't get a big hit against Milwaukee's ace.
The Pirates were miserable with men on. They went 1-of-12 with runners in scoring position and stranded 12 total, including eight against Sheets, who is having the best season of his eight-year career.
"It was a rough day for me," Sheets said. "If I could've made better pitches, I could've put them away sooner. I'm trying out there."
Sheets (10-2) stranded eight runners in the first five innings, allowing one run and eight hits before departing in the sixth after throwing 120 pitches.
"We did our job as far as getting his pitch count up, we didn't do our job as far as driving guys in," Pirates manager John Russell said.
Sheets became the sixth 10-game winner in the NL this season, thanks to Hardy, Hall and a five-run fifth inning.
Hardy, who struggled with a tight shoulder last month that forced him out of the lineup for a week, had four hits for the second straight day to extend his hitting streak to 16 games, the longest active streak in the majors. He's now batting .448 with six homers and 16 RBIs during his streak, and the homer in the fifth set off Milwaukee's offensive outburst.
"My shoulder's been feeling good and it's just been falling for me," Hardy said. "This is definitely up at the top with my hottest streaks ever."
"That's definitely not what I planned on doing," Gorzelanny said of walking Sheets. "I was progressing, and then to have a game like that today, it's just unfortunate. Unfortunate things happened today, I didn't throw the way I planned and it showed."
Gorzelanny picked off Ryan Braun after a walk, but failed to get another out.
After Mike Cameron walked, Hall, who drove in three runs, singled in Hart and Gorzelanny's defense failed him when left fielder Jason Bay made an errant throw to third base, allowing Cameron to score on a nifty slide past Ryan Doumit's tag to make it 8-1.
Gorzelanny, who gave up 11 hits, was yanked after his fourth walk of the inning. But he didn't get any run support with Pittsburgh leaving two runners on in four different innings and only scoring once on Xavier Nady's RBI double with two outs in the third.
It was a good start to the Brewers' 10-game homestand after they lost a five-run lead in the ninth on Thursday in Arizona.
"You get mad and upset, but you realize you better forget it," Brewers manager Ned Yost said.
Hall, who faces lefties as part of a third base platoon with Russell Branyan, made sure they forgot quickly. He drove the first pitch he saw into the Brewers' bullpen to give Milwaukee a 2-0 lead in the second. He also scored on Jason Kendall's two-out single in the fourth to make it 3-1.
"I'm starting to get some confidence back," said Hall, who acknowledged he's accepted his platoon role after hinting he wanted to be traded. "I've been searching for a little while now, I think I'm starting to find some stuff."
The Brewers acknowledged they'd heard the rumors about Indians pitcher C.C. Sabathia coming to Milwaukee in a trade. "He'd be a great addition to this team," Hall said. "Any time you get a Cy Young guy in your rotation, it's going to make your team better. I'm sure everybody in here would love to have the guy in our rotation." ... Carlos Villanueva picked up his first save by pitching 3 1/3 innings. ... Pirates 2B Freddy Sanchez did not play for the second straight game. Russell said Sanchez, batting .229 with one hit in his last four games, is pressing at the plate. ... Braun (sore hand) returned to the lineup and went 1-for-3 but was on base four times.