Sonny Gray allowed one hit over seven innings and Alec Burleson drove in two runs as the St. Louis Cardinals completed a three-game sweep with a 5-3 win over the San Francisco Giants on Sunday.