Jason Heyward added three hits and drove in a run for the Cardinals, who won for the seventh time in eight games. Greg Garcia also drove in a run.
Jaime Garcia (7-4) allowed season highs in hits (10) and runs (four) but was effective enough to improve to 4-0 over his past six starts. He did not walk a batter and struck out one, a season low.Marlon Byrd celebrated his 38th birthday with a pair of doubles, a triple and four RBIs. Kelby Tomlinson also drove in a run for the Giants, who ended a 3-3 homestand.
Chris Heston (11-8) gave up five runs in 3 2-3 innings.