SAN FRANCISCO -- Before Tuesday, Tim Lincecum had never touched the computer used to control the clubhouse music. His teammates let the rookie pick his pregame tunes, then he went out and pitched another great game.
Both were perfect through three innings on 30 pitches. Lincecum won at home for the first time and the fans cheered him at every chance.
"Getting the first win for me feels great," said the 22-year-old Lincecum, who struck out four. "The nerves weren't there as much as last time."
Barry Bonds drew two more intentional walks and stayed stuck at 745 home runs, while Ray Durham drove in runs after both free passes to the slugger -- again making an opponent pay for pitching around the Giants star.
Durham tied it at 2-all with an RBI single and Pedro Feliz lined a go-ahead two-run double to left in the sixth. Durham also had a sacrifice fly in the fourth and Ryan Klesko doubled twice and singled to help the Giants to their first three-game winning streak since eight consecutive victories from April 18-26.
"It's very important that not just one guy's hitting," Durham said. "If you get different guys getting big hits, you can't pitch around one guy."
Bonds went 0-for-2 with a strikeout and popup and has gone hitless in three games in a row. He is scheduled to get a break for Wednesday night's game, which coupled with Thursday's off day will give him two days to rest.
"He needs it," manager Bruce Bochy said.
Bonds is tired from all the walks but insists his right knee is just fine, despite all the chatter about what might be wrong with him now -- stuff he says is being "created" by the media to explain his funk.
"My legs are fine. I'm healthy," Bonds said. "I'm just exhausted. I'm not playing for my statistics. I'm past that stage of my career. I want to win a championship. That's why I don't talk about me anymore."
He worked the count full against Oswalt leading off the second, then struck out looking. Bonds came up with one out in the fourth and runners on second and third and was intentionally walked for the 17th time this season. He received his 18th in the sixth.
He has gone 34 at-bats and 53 plate appearances without a homer, remaining 10 shy of tying Hank Aaron's career record of 755. During that stretch since the homer, Bonds has drawn 19 walks with seven intentional free passes, struck out eight times and is batting .147 (5-for-34).
"The walks are killing me," said Bonds, who turns 43 on July 24. "My legs are tired. You've got to get pitches to hit."
Lincecum (2-0), the hard-throwing right-hander nicknamed "Franchise" by his teammates because he is the club's top 2006 draft pick, didn't get a decision Thursday night at Minute Maid Park despite seven impressive innings in which he didn't allow an earned run, gave up two hits and struck out 10.
"He was right there again," Klesko said. "He was overpowering. He looked great."
After Adam Everett's infield single in the fifth Tuesday, Lincecum retired the next seven Houston batters in order before a walk to Brad Ausmus. Lincecum received a standing ovation when he walked off the mound after the seventh and eighth. Armando Benitez finished for his ninth save in 10 chances, getting a scare when Carlos Lee's long fly to center came up a few feet short of a tying two-run homer.
"Lee hit it well but unfortunately it went to the wrong part of the ballpark," Astros manager Phil Garner said. "We scored two runs and we didn't make that stand up. We didn't have very many chances."
The Astros ended a 19-inning scoreless stretch in the fourth. Houston hadn't put up a run since the third inning Sunday against Texas.
Mike Lamb singled to start the inning for the first hit off Lincecum and Mark Loretta tripled moments later, his first since April 9, 2005, while with the Padres. After Lance Berkman's groundout, Lee had an RBI single and then stole second. He went to third on Luke Scott's single, but Hunter Pence grounded into an inning-ending double play.
Oswalt (6-3) was handed his first loss in May after winning his last three decisions since a defeat to Milwaukee on April 27.
"I felt as good as I did on Thursday," Oswalt said. "When we went up 2-0, I thought I could hold them down. But I left a couple of pitches up."
San Francisco's Randy Winn had his career-best 20-game hitting streak snapped, which was the longest current streak in the majors.
Fred Lewis recorded the first hit off Oswalt with a single to right in the fourth after Winn's groundout started the inning. Klesko doubled after Lewis, then Bonds walked to load the bases for Durham.
- Klesko's three hits were a season high. He has gone 17-for-50 (.340) over his last 18 games, 12 starts.
- Houston is 8-15 in San Francisco's waterfront ballpark since it opened in 2000.