Vogelsong (4-2) logged his sixth straight start without a loss, working around eight hits while striking out three and issuing no walks in the 101-pitch performance.
Jeremy Affeldt collected his first save of the season with two scoreless frames and Brandon Crawford drove in a pair of runs for San Francisco, which won for the seventh time in eight games.
The Giants remained three games behind first-place Los Angeles in the National League West after the Dodgers defeated Philadelphia Monday.
Cubs starter Jeff Samardzija issued five walks and gave up seven hits over five innings, allowing two runs. He drove in a run with a second-inning single.