ST. LOUIS -- In a game more suited for Coors Field than the St. Louis Cardinals' pitcher-friendly Busch Stadium, it was St. Louis that pieced together a dramatic ninth inning rally to win a slugfest.
On the verge of a third straight home loss marked by a blown 4-1 lead and shaky defense throughout, St. Louis (65-37) instead pilfered a win as the Colorado bullpen imploded in an ugly finish.
"We found a way to win and it could start another hot streak," Cardinals first baseman Matt Carpenter said.
Carpenter, who cracked a three-run homer in the second and a solo shot in the fifth, started the deciding rally with his fourth hit, a ground-rule double off reliever Boone Logan.
Closer John Axford entered the game but only fueled the fire, walking center fielder Randal Grichuk and yielding a single to second baseman Kolten Wong to fill the bases. Shortstop Jhonny Peralta laced a two-run single to center, tying the game.
Following an intentional walk to right fielder Jason Heyward, catcher Yadier Molina flew out to shallow center, anchoring Wong to third. But Garcia, who was called up earlier Thursday, watched a 3-1 fastball sail high to end the 3-hour, 50-minute marathon.
"You have to understand who you are as a player," Garcia said. "I was looking for one spot on the 3-1 pitch and I didn't get it."
Axford (3-5) has allowed eight runs in his last 3 2/3 innings, covering five games, and has seen his earned run average soar to 4.45. Rockies manager Walt Weiss declined to discuss a possible closer change after the game.
"It's the worst five-game stretch of my career," Axford said. "That's what's going on right now."
St. Louis upped its National League Central lead to 5 1/2 games over second place Pittsburgh, a 15-5 loser in Cincinnati. Colorado (43-57) fell to 1-3 on their seven-game road trip despite a 16-hit attack that included a solo homer from catcher Nick Hundley and a two-run blast by starting pitcher Chris Rusin.
Taking advantage of poor throws by reliever Kevin Siegrist, the Rockies snapped a 6-6 tie in the eighth with two runs. Siegrist's throwing error on a sacrifice bunt by center fielder Charlie Blackmon set up a sacrifice fly by shortstop Jose Reyes, and another wild throw past third after Siegrist caught Blackmon stealing scored the second run.
But the Cardinals' last-gasp rally made their bad defense -- three errors, plus two misjudged fly balls and at least three cutoff men missed -- meaningless.
"Some sloppy defense at times," manager Mike Matheny said. "It's very rare for this club. It almost hurt us, but fortunately, we had some good at-bats when we really needed them."
Both starters were pounded over five-inning stints. Rusin allowed 10 hits and six runs with no walks and five strikeouts, while St. Louis' Carlos Martinez yielded 10 hits and five runs, walking none and fanning six.
Martinez drew Colorado's ire when he plunked second baseman DJ LeMahieu with a fastball to the hip in the fifth inning, then exchanged words with LeMahieu. After first baseman Ben Paulsen bounced into an inning-ending 4-6-3 double play, Martinez exulted while multiple Rockies yelled at him.
"It wasn't an accident," LeMahieu said. "I hit the ball back at him the at-bat before and I guess he thought I tried to hit it back at him or something."
Carlos Villanueva (4-3) picked up the win with a scoreless ninth.
NOTES: New acquisition Brandon Moss was in uniform for St. Louis on Thursday night but didn't start. The outfielder came over in a trade with Cleveland for minor league LHP Rob Kaminsky, a first-round pick by the Cardinals in 2013. ... Colorado 2B DJ LeMahieu saw his career-high 18-game hitting streak snapped Wednesday at the Chicago Cubs. ... The Cardinals placed LF Matt Holliday (right quad strain) on the 15-day disabled list and recalled INF Greg Garcia from Triple-A Memphis. They also designated 1B Dan Johnson for assignment.