HOUSTON -- Brett Myers set a franchise record with another effective start and helped himself out at the plate, too.
Not a bad night, at all.
Myers (5-5) allowed three runs, one earned, and six hits, becoming the first Houston player to begin the season by pitching six innings or more in each of his first 15 starts. He also had two hits and drove in a run.
"Fifteen starts of six or more innings is pretty special," Astros manager Brad Mills said. "Offensively you can't say enough about him. He was able to come through with some big hits as well."
It was the shortest outing of the year for Giants starter Barry Zito (7-4), who yielded five runs and seven hits in four innings.
Zito was upset with the hits he surrendered to Myers.
"I think the difference was giving up the two hits to the pitcher," he said. "He kept the inning alive with two outs in the second with that little bloop. And then there was that broken-bat hit that scores their fifth run.
"It's frustrating on paper to give it up to a pitcher, and even though his average isn't high, he is one of the tougher outs as a pitcher."
Carlos Lee hit an RBI single in the first and Keppinger added a three-run double in the second to help Houston build a 4-0 lead.
"Z just didn't have his stuff tonight," San Francisco manager Bruce Bochy said. "He was up, and he made some mistakes early."
Myers said the early cushion made the outing easier for him.
"It's always good to be able to have control of a game early and it settles a pitcher in," he said.
Matt Lindstrom pitched a perfect ninth for his 16th save as the Astros ended a seven-game skid against the Giants this season.
San Francisco rallied in the fifth, taking advantage of a pair of errors by Astros third baseman Chris Johnson. Aaron Rowand reached second on Johnson's one-out miscue and Andres Torres followed with a triple to right field. Freddy Sanchez got on base when Johnson made another mistake, this time on a bad throw to first base.
"It's out of my control," Myers said of the errors. "All I can do is make pitches and hopefully try to pick up the guys that made a mistake. I know they're hard on themselves for making the mistake, but it's my job to pick them up and I did the best I could to try to keep the damage minimized."
Mills was impressed with Myers' poise in that inning.
"It's not the easiest thing to do to work through those mistakes," he said.
Myers hit an RBI single in the fourth and Johnson's run-scoring double in the sixth made it 6-2.
Juan Uribe added an RBI double in the seventh for San Francisco.
Houston ace Roy Oswalt hasn't heard anything about a possible trade since asking to be dealt last month. He told his agent not to come to him unless "there's something on the table." So far that hasn't happened. The 32-year-old expects to hear more about his future after the All-Star break, when teams are looking ahead to the second half of the season. ... Astros SS Tommy Manzella has a broken left index finger and will be out about six weeks. ... San Francisco's Joe Martinez, who is scheduled to start Saturday against Boston, walked one in a scoreless seventh inning. ... San Francisco INF Ryan Rohlinger, on the disabled list with a strained left hamstring, hit three solo homers in his first rehabilitation game with rookie-level Arizona on Tuesday.