SAN FRANCISCO -- For Barry Zito, a no-decision became a positive thing -- a sign of progress. Lance Berkman is too much for any pitcher to handle right now.
Hunter Pence hit a go-ahead sacrifice fly in the seventh, Berkman had a tying two-run home run off Zito and the surging Houston Astros beat the San Francisco Giants 7-3 on Monday night for their fourth consecutive victory.
Roy Oswalt (4-3) retired the final 14 batters he faced to win his fourth consecutive decision since starting the season 0-3, and the right-hander struck out six in eight innings without giving up a walk.
"Roy settled down and our guys woke up about the sixth inning," Houston manager Cecil Cooper said. "It was a big win for us and for Roy. He hasn't seen the eighth inning much."
Vinnie Chulk (0-1) gave up Pence's sacrifice fly in the seventh.
Berkman hit his 13th home run to match Philadelphia's Chase Utley for the major league lead and also doubled, singled and has an 11-game hitting streak. Pence has hit safely in 10 consecutive games for the Astros, who won for the ninth time in 10 games.
Cooper wasn't even sure until a couple of hours before game time whether Berkman would play because of a tender groin. The star cleanup hitter raised his average from .382 to .393. In 15 games since April 26, he has batted .509 (29-for-57).
"As long as I keep it manageable, this is the way it's going to be until it gets better," Berkman said of his injury. "If I stay smooth, there should no trouble. It doesn't bother me when I'm swinging. ...
"The guys are playing well and you want to try and win as many games as you can when it's like this. The offense hung around until we got the opportunity."
Berkman also tied the Houston club record by scoring a run in his 15th consecutive game, equaling Carlos Beltran.
"He's a hard guy to go through," Cooper said.
Jose Valverde got the final out in the ninth for his ninth save. He entered with two runners aboard, then gave up a single to Rich Aurilia that loaded the bases. Pinch-hitter Ray Durham flied out to left to end it.
Zito, San Francisco's $126 million left-hander who will turn 30 on Tuesday, was through after six innings and 103 pitches, leaving with the score tied at 3. He lost his first seven starts of 2008 and even was given a week off to try to get right.
"I was little more aggressive and that paid off," Zito said. "I don't know if I'm building toward a win. That's out of my control. I'm building toward being more aggressive and having better command."
The fickle fans who have regularly booed him turned their jeers to cheers for Zito, winless since beating Los Angeles last Sept. 30 at Dodger Stadium.
"That's awesome," Zito said of receiving a warm reception. "I didn't quite know it. I was focused on what I had to do."
John Bowker hit a solo home run, and Fred Lewis and Omar Vizquel each doubled in runs in the third for San Francisco. After Bowker's home run, the Giants didn't get another baserunner against Oswalt.
"The way to pick up wins is to go deep in a game," Oswalt said. "If I can outlast the other starter, I have the chance."
Zito pitched scoreless ball into the fourth inning for the first time all season, and his signature curveball was effective once again in matching his longest outing of the year at six innings. He received a standing ovation -- perhaps slightly sarcastic -- after a 1-2-3 first inning in which he needed only 11 pitches.
"He's been competing," Giants manager Bruce Bochy said. "Z's going to be fine. If he pitches like this, he's going to be fine. ... To me, he's got a good feel for what he's doing out there now. He's confident. He's a standup guy. He wants the ball. He's not worried about the record."
Houston's Brad Ausmus singled leading off the third for his 1,500th career hit. He also became the eighth catcher in major league history with 1,500 career hits and 100 career stolen bases -- and the third active catcher, joining Milwaukee's Jason Kendall and Ivan Rodriguez of the Tigers.
Miguel Tejada's sacrifice fly in the sixth put the Astros on the board after Pence and Mark Loretta hit back-to-back singles off Zito to start the inning. Berkman followed Tejada with his drive into the seats in left-center.
Jose Cruz Jr. also drove in a run for Houston against his former club.
Vizquel moved back to the No. 2 hole in the order after drawing three intentional walks Sunday. ... The teams came in tied for the major league lead with 40 stolen bases each and neither added to their total. ... A moment of silence was held before first pitch in memory of 18-year-old Anthony Giraudo, who was killed Friday outside the ballpark. He was allegedly punched in the head during an argument and then hit his head on the ground.