HOUSTON -- With two starters who tied for the most quality starts in the Major Leagues last year facing each other, it figured to be a rough night for hitters -- and that's exactly what happened Friday night when Milwaukee's Chris Capuano and Houston's Roy Oswalt collided at Minute Maid Park.

The two pitchers, who racked up 25 quality starts (at least six innings -- no more than three earned runs allowed) apiece last season, picked up another quality outing in this one, but it was Capuano (4-0) who came away with the 4-1 victory after the left-hander outdueled the Astros ace to join Florida's Dontrelle Willis as the only four-game winners in the National League.

"I thought [Capuano] pitched a great game," Milwaukee manager Ned Yost said. "I think that he had far from his best stuff and he really did a nice job of keeping us in the ballgame. His ball-to-strike ratio was probably about 60 percent, which isn't very good, but he found ways to compete with it and that's the sign of a good pitcher.

"Today was his best start because he had his worst stuff and he made it work. I've watched years and years of Tom Glavine do it, Greg Maddux do it -- the great guys do it. You're not going to have your great stuff every night, but you've got to go out and find a way to compete with it, and he did."

J.J. Hardy's two-run double in the seventh -- the Brewers shortstop's second double of the night -- broke a 1-1 tie and gave the Brewers their second win over Oswalt (3-2) in six days.

"[He] started me off with a slider, [I] took it, next pitch was a fastball in, [I] took a good swing and [I'm] happy it stayed fair," said Hardy, who has hit safely in eight consecutive games. "Our pitching's been great. Even though we weren't hitting for the first six innings, our pitching kept us in the ballgame."

Trailing 1-0 entering the seventh, Milwaukee's Geoff Jenkins singled and went to third on a double by Gabe Gross. Pinch-hitter Tony Gwynn walked and Rickie Weeks followed with a groundout to short that scored Jenkins with the tying run. Hardy then drove an 0-1 fastball from Oswalt down the left-field line to score Gross and Gwynn.

"I hit the ball hard but in a lot of parks there's a chance the left fielder gets to that," Gross said of his seventh-inning double. "I was watching and I saw Carlos [Lee] stop. When I saw Carlos stop, I put my head down and started running because I knew it was off the wall."

Capuano allowed just five hits, and all but one were singles. The left-hander walked three and held Houston scoreless during his final five innings of work.

"There's certain days you go out there and just nothing works. My changeup felt terrible coming out of my hand, I couldn't control my breaking pitch at all and I wasn't hitting the inside corner with my fastball -- which is my bread and butter, my fastball in," Capuano said. "My fastball in and my changeup are two things that are usually my foundation so when you don't have any of those working, you can't just throw in the towel. You've got to try to find a way to still get outs, and I was able to do that by throwing some good two-seamers, some good sinkers and letting them hit into double plays and put the ball in play."

Oswalt (3-2) gave up three runs on six hits in seven innings, walked four and struck out five.

The Brewers had the bases loaded against Oswalt with two outs in the fourth on walks to Bill Hall and Gross sandwiched around a single by Johnny Estrada, but Craig Counsell flied to right on a 3-2 fastball from the Houston right-hander to end the threat.

Estrada hit a solo shot in the eighth inning for his first homer of the season.

"When you face a guy like Oswalt, you know he's going to be tough," Gross said. "You keep putting pressure and putting pressure, and, hopefully, you're able to push one across."

Craig Biggio led off the first with a double and Capuano hit the next batter, Chris Burke, but what could have been a big inning for the Astros wound up going for a single run as Capuano induced Lance Berkman to hit into a double play. Lee, the former Brewer, followed with a ground-ball single up the middle to score Biggio.

"You know Oswalt is going to be tough out there, runs are going to be at a premium, but at the same time, getting out of the first inning with one run, I felt like that was kind of a moral victory because that was a tough spot that could have been a lot worse," Capuano said.

Derrick Turnbow pitched a perfect eighth and Francisco Cordero retired the side in order in the ninth for his Major League-leading ninth save.

"Our bullpen did a phenomenal job tonight," Yost said. "Once we scored the runs in the sixth, my whole focus was to get us through the seventh inning. I was going to do whatever I needed to do to get us through the seventh to get us to Turnbow and Cordero, and it worked out good."