Giants beat Cardinals