Garcia (4-6) padded his win total for the first time since May 16 by allowing one unearned run on nine hits in the Cardinals' third win in their last four outings.
David Freese and Daniel Descalso had two hits and an RBI apiece to lead the Cardinals' 10-hit attack. Skip Schumacher had an RBI single and scored a run in the 3-run St. Louis second.
Rookie Matt Harvey (3-4) took the loss in a five-inning start. He allowed three runs on six hits and struck out four.
N.J. man wakes up from 10-hour sleep with knife in back
Sign language interpreter at Mandela service called out as fake on Twitter