SAN FRANCISCO -- Buster Posey hit a three-run homer, Ryan Vogelsong won for the first time in nearly a month and the San Francisco Giants opened their longest homestand of the season with a 7-1 victory over the San Diego Padres.
Ryan Theriot and Melky Cabrera had three hits apiece for the Giants, who benefited from an overturned call by the umpires. San Francisco improved to 8-2 since the All-Star break.
Vogelsong allowed one run and four hits over seven innings. The right-hander walked three and struck out six while lowering his ERA to 2.26.
Yasmani Grandal had two hits for San Diego, which has lost five of seven games to San Francisco this season.
Posey's third home run in his last 11 games highlighted another stellar night from the Giants' All-Star catcher.
Since going hitless against Pittsburgh on July 7, Posey has been San Francisco's best hitter. He went 3 for 4 against San Diego and is batting .512 over his last 11 games.
That helped the Giants to their fifth consecutive win at AT&T and kept them 1½ games ahead of the Dodgers in the NL West.
San Francisco scored four times off San Diego starter Clayton Richard in the first inning when they also got some help from the umpiring crew.
Posey's RBI single opened the scoring and Angel Pagan followed with a bases loaded walk. Posey later scored on Joaquin Arias' fielder's choice to make it 3-0.
Brandon Crawford then hit a sinking line drive that Padres left fielder Mark Kotsay caught for the third out. Television replays appeared to show Kotsay trapping the ball, and Giants manager Bruce Bochy came out to dispute the call as both teams left the field.
After a brief meeting, the umpires changed the decision and ruled it a hit. That forced the Padres back out onto the field, and Pablo Sandoval, who was on third, was awarded home plate to push the Giants lead to 4-0.
Crawford was also involved in another disputed call in the sixth when he hit a one-out double but was called out after the Padres argued that Crawford missed first base and appealed. Two innings later, Crawford was ejected after grounding out to first base when he appeared to say something to first base umpire Jordan Baker.