SAN FRANCISCO -- Roy Oswalt pitched eight strong innings in the Houston Astros' 7-1 victory over the San Francisco Giants on Sunday.
Miguel Tejada, Hunter Pence and Jason Michaels each hit solo home runs for the Astros, who had been shut out in their previous two games against the Giants. Jeff Keppinger had three hits and drove in a run.
A three-time All-Star, Oswalt (5-4) gave up three hits, struck out six and walked one in improving to 3-1 with a 2.13 ERA over his last four starts. He also had a two-run single in the eighth.
Rich Aurilia hit a home run for the Giants, who have lost three of their last five.
Giants' starter Randy Johnson (8-6) left the game with a left shoulder strain after committing a throwing error in the top of the fourth inning. Johnson took an awkward swing against Oswalt in striking out in the bottom of the third and grabbed his shoulder as he walked back to the dugout.
Johnson allowed four runs and five hits over 3 2/3 innings. He struck out two and did not walk a batter.
Tejada, named to his sixth All-Star Game earlier in the day, hit the first pitch he saw over the left field fence.
Johnson settled in until his at bat in the bottom of the third. He gave up fourth-inning homers to first-time All-Star Pence and Michaels, then gave up a single to Keppinger.
Johnson fielded Oswalt's slow bouncer and threw it into right field, giving the Astros an extra run. He was immediately removed from the game and replaced by Justin Miller.
Houston tacked on three more runs in the eighth, with Keppinger doubling home a run before Oswalt singled into left field.
Aurilia broke up Oswalt's shutout bid with a one-out home run in the eighth.
LaTroy Hawkins pitched a perfect ninth to complete the victory.