SAN FRANCISCO -- Astros pitcher Henry Sosa finally got his first career win at the ballpark he envisioned playing in for a long time.
It just came in a different uniform than the rookie right-hander expected -- and on only three days' rest.
Sosa, who spent seven seasons in San Francisco's minor league chain before being traded to Houston in July, allowed only four hits -- all singles -- and kept a sold-out crowd at AT&T Park mostly silent as the Astros held on to beat the Giants 3-1 Thursday night.
Not that he had anything to prove against his former club.
"I don't know if the Giants felt like I could do the job as a starter," said Sosa, who walked three and struck out three in six strong innings. "But the Astros gave me a chance and I'm grateful for that."
Sosa (1-2) pitched with runners on base every inning but limited the damage with a crisp fastball and slider that baffled the Giants most of the night.
That, along with a big night from leadoff hitter Jordan Schafer, helped the Astros to their third win in four games against the defending World Series champs.
Schafer homered, scored three times and stole a base, one of a season-high four steals by Houston. The Astros, who also turned three double plays, still own the worst record in the majors at 43-88.
"There was a lot of good things tonight and it was sure nice to see," Houston manager Brad Mills said. "The way (Sosa) went after hitters was impressive. He came out and went right after guys with all of his pitches."
Sosa's performance might have been the most encouraging.
He worked in and out of trouble, allowing the leadoff runner to reach base in five consecutive innings. Sosa limited the damage each time by attacking the strike zone, something he failed to do in his previous three starts.
Sosa's best work came in his final inning.
Orlando Cabrera walked to start the sixth and was sacrificed to second, putting the potential tying run on base. Sosa, who had a no-decision against the Giants last Sunday, retired Carlos Beltran on a comebacker and then got Pablo Sandoval to ground out to third.
"This was special because it's my first win after two losses," said Sosa, who kept the game ball and lineup card as souvenirs. "The last couple games, I don't know why, but my velocity was low. Today I felt really good."
J.D. Martinez doubled twice and had two RBIs for the Astros, who ended a four-game losing streak.
Cabrera drove in San Francisco's only run with an RBI groundout in the third. The Giants, losers of five of seven, fell three games behind first-place Arizona in the NL West.
"We just couldn't keep the line moving," manager Bruce Bochy said. "We've been talking about it for a while. One run is not going to cut it. We need to score runs."
Sosa got just enough support from his teammates.
Schafer singled and scored in the first, walked and scored in the third and then homered off Giants starter Ryan Vogelsong in the seventh. It was Schafer's second home run for the Astros and the fourth of his career. He had gone 148 at-bats since his last home run on June 13, with Atlanta.
San Francisco had the potential tying run at the plate in the ninth after Beltran's leadoff single but Sandoval hit into a 3-6-3 double play before Aubrey Huff flied out to end it.
Vogelsong (10-4) gave up six hits over 7 1/3 innings and lost for the third time in four starts.
After beginning the season 8-1, Vogelsong is 1/3 with a 4.00 ERA over his last four starts. The Giants have scored only one run in the three losses.
"It was definitely a grind," Vogelsong said. "It's not for lack of effort. We are trying everything we can to get some runs across."
It was just the latest setback for San Francisco's pitching staff, which has been beset by a rash of injuries lately.
The Giants, who have lost the opening game in their last 11 series, have even bigger issues with their offense. Besides the three double plays, San Francisco also had two runners caught stealing.
Martinez doubled in Schafer in the first, then added a sacrifice fly in the third to drive in Schafer again.
The Giants, held to two runs or fewer in four of their previous eight games, cut the gap to 2-1 on Cabrera's RBI groundout in the third. They got some help from Sosa, called for a balk after Eli Whiteside singled and was sacrificed to second.
Schafer made it 3-1 with his two-out homer in the seventh.
San Francisco's last win in a series opener was on July 18 against the Dodgers. ... Giants closer Brian Wilson played catch briefly before the game but Bochy is unsure if the All-Star closer will be ready to come off the disabled list when he's eligible next week. "I wouldn't rule it out, but it's going to be tough for him to be ready to go when his time is up," Bochy said. ... LHP Barry Zito (mid-foot sprain) may throw off the mound in Arizona as early as Friday. ... Whiteside was activated from the disabled list. Backup catcher Hector Sanchez was optioned Class-A San Jose to make room. ... The Astros called up LHP J.A. Happ from Triple-A Oklahoma City to start Friday. Happ (4-14) had a 1.50 ERA in three starts in the minors. ... The Astros optioned OF J.B. Shuck down to make room for Happ. ... LHP Madison Bumgarner (7-12), who has a 3.51 ERA over four starts in August, goes for the Giants.