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 homer off Zito and the surging Houston Astros beat the San Francisco Giants 7-3 on Monday night for their fourth straight victory.

Roy Oswalt (4-3) retired the final 14 batters he faced to win his fourth straight decision since starting the season 0-3, and the right-hander struck out six in eight innings without giving up a walk.

Vinnie Chulk (0-1) gave up Pence's sacrifice fly in the seventh on the way to the loss.

Berkman hit his 13th homer 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.

Houston manager Cecil 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).

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 turns 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.

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.

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 homer, the Giants didn't get another baserunner against Oswalt.

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.

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 consecutive 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.

Notes:@ 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.