ST. LOUIS -- A left shoulder strain. A torn rotator cuff. Thoracic outlet surgery. A groin injury.
All those ailments have cost St. Louis Cardinals pitcher Jaime Garcia parts of the last four seasons, leaving some to wonder if Garcia will be back with the club next year when it has the option for the final two years of his deal.
But Garcia offered up another reminder Friday night of just how good he is when he's at the top of his game, coming up two outs short of his first shutout in four years in a 3-1 win over the Miami Marlins at Busch Stadium.
Working 8 1/3 innings, Garcia (5-4) gave up just six hits and one unearned run, walking one and fanning six as he lowered his already miniscule earned-run average to 1.57. Throwing 69 of his 96 pitches for strikes, Garcia never reached three balls on any hitter until his last, walking first baseman Casey McGehee with one out in the ninth.
"It just feels good to be out here contributing," Garcia said. "I'm doing the things I set out to do every time I'm out there -- keep the ball low and keep my team in the game and give them a chance to win it."
It was apparent from the start that Miami (46-69) was no match for Garcia's darting 90 mph fastball. He blew through the first three innings in order on just 32 pitches and reached the seventh inning with only 64 pitches, recording nine first or second-pitch outs before the seventh.
Manager Mike Matheny wanted Garcia to get a crack at what would have been his fourth career shutout, warming no one up in the bullpen during a long bottom of the eighth. But Garcia hit left fielder Derek Dietrich and missed with a 3-1 fastball to McGehee.
With the potential tying run at the plate, Matheny felt compelled to wave in closer Trevor Rosenthal and Garcia walked off the mound to a standing ovation from the crowd of 42,025.
"He had no-hit stuff tonight," Matheny said. "He had shutout stuff. I wanted the shutout for him, but we had to win the game."
Rosenthal gave up a single to center fielder Cole Gillespie, followed by a fielding error by right fielder Jason Heyward that scored Dietrich. But a flyout and popup ended the game, sealing Rosenthal's 36th save in 38 chances.
St. Louis (74-41) maintained a six-game lead over Pittsburgh in the National League Central, while the Marlins (46-69) saw their three-game winning streak end.
Tom Koehler (8-10) was a tough-luck loser for Miami, giving up only five hits and two runs in seven solid innings with a walk and two strikeouts.
He matched Garcia pitch for pitch except for the fifth and seventh. First baseman Mark Reynolds slammed a one-out double in the fifth, moved to third on Garcia's groundout and scored when Carpenter dropped a surprising bunt down the third-base line for an RBI single.
"I'm not sure that (third baseman) Martin (Prado) could have thrown him out even if he had been in on the grass," Gillespie said of Carpenter's bunt. "It was that good a bunt."
Reynolds made it 2-0 in the seventh when he laced an RBI single to left that scored center fielder Randal Grichuk, who led the inning off with a double and moved to third on a groundout.
Carpenter capped the scoring in the eighth with a 419-foot homer to left-center off Mike Dunn, his 18th of the year and 10th since the calendar flipped to July.
Miami right fielder Ichiro Suzuki made history of sorts with a two-out single to left in the fifth. Counting his hits in his native Japan, Suzuki has 4,191, matching the career total of Hall of Famer Ty Cobb.
But Suzuki's first-pitch swing with the tying runs aboard resulted in a popup to Carpenter, cinching a well-earned win for Garcia.
"That's as good as I've seen him," Matheny said of him. "Just watching major league hitters take the kind of cuts they do against him ... it's different. He's got location, deception and movement."
NOTES: Miami CF Christian Yelich (right knee contusion) didn't start for the third straight game. He hasn't played since a 4-1 win in Atlanta on Sunday. ... The Cardinals have the best home record in baseball (43-17), a stat they have been able to pad greatly since the All-Star break. They are finishing a stretch of 23 home games out of 31 since the break. ... The Marlins' 10-run sixth inning Wednesday against Boston tied the club record for most runs in an inning. The Marlins also scored 10 in the eighth inning vs. Arizona on July 9, 2009.