The Cardinals kept pace in the National League's Central Division race with a win in Friday's opener, which came when Kyle Lohse turned in a strong start and his RBI single punctuated a big sixth inning that led to a 6-1 victory.
Lohse (10-7) allowed just one run in 6 1/3 innings -- a homer by Carlos Gonzalez -- and pitched into the seventh for the first time since July 8. He gave up four hits, walked three and struck out three.
David Freese drove in three runs to lead the offense as the Cardinals opened this three-game series with a strong showing. They dropped the first two games of their previous set, against Milwaukee, before avoiding a sweep with a win Thursday.
Aaron Cook (2-7) allowed six runs in 5 2/3 innings to take the loss, Colorado's third in a row.
St. Louis is four games behind the Brewers in the division and trail Atlanta by six games in pursuit of the NL's wild card spot.
A 13-game winner in 2010, the 25-year-old Garcia picked up his 10th win of this season with a 9-1 verdict at Pittsburgh on July 23.
He's 0-1 in three starts since, allowing 24 hits and 14 runs in 16 innings with five walks and 14 strikeouts.
He's made two career starts against the Rockies and lost the lone decision while surrendering 13 earned runs on 20 hits in 8 2/3 innings.
The Cardinals are 7-3 in Garcia's last 10 starts.
For Colorado, righty Jason Hammel also tries for his first win in August.
The 29-year-old is 0-1 in two August starts. losing an 8-6 home verdict to Philadelphia and getting a no-decision in Colorado's 10-7 win at Cincinnati.
He last won on July 29 at San Diego, where he allowed two runs in 6 1/3 innings of a 3-2 victory.
Hammel lost his lone career start against St. Louis after allowing eight hits and five runs in three innings.
The Rockies are 5-5 in his last 10 starts.
The Cardinals also won two of three in Colorado in late May, giving them a victory in seven of the past eight meetings.