Ryan Vogelsong threw eight sharp innings for his first victory in three months, helping the San Francisco Giants beat the Pittsburgh Pirates 4-0 on Sunday.