Arroyo's double off the wall in left field scored Buster Posey and Brandon Crawford and came on the 12th pitch he saw from Cardinals reliever Kevin Siegrist (0-1). Posey, Crawford and Eduardo Nunez singled to load the bases, giving the Giants their first runners in scoring position in the game.
Giants starter Jeff Samardzija threw eight innings, scattering five hits and striking out eight. He threw 75 of his 105 pitches for strikes.
Hunter Strickland (1-1), Derek Law and Josh Osich pitched in relief for the Giants, who won for the seventh time in their last eight tries.
Mark Melancon earned his eighth save.