''Trevor's been waiting for that moment,'' Colorado manager Bud Black said. ''He just missed it last night; this one he got. This one he barreled up. That was a moment he'll cherish for this season. That was big for him.''
Daniel Bard struck out Dylan Carlson with runners at second and third for his 12th save.
Kyle Freeland allowed three hits over six shutout innings for the Rockies, who have won five of six. Jhoulys Chacin (2-1) worked a perfect seventh.
Pinch-hitter Raimel Tapia reached on an infield single with one out in the seventh and Garrett Hampson walked. Yonathan Daza beat out a potential double-play ball before Story hit a 461-foot drive off Genesis Cabrera (1-3) for his 10th homer of the season.
''I like ones that are late in the game with a lot on the line, or obviously the walk-offs,'' Story said. ''Those are always special.''
St. Louis got two in the eighth on RBI singles by Paul Goldschmidt and Yadier Molina, but Carlos Estevez left runners at the corners by striking out Harrison Bader.
''We're never out of it,'' said Tommy Edman, who doubled before Carlson came to bat in the ninth. ''We had a chance in the ninth but unfortunately we weren't able to finish it off.''
Freeland exited Monday's start when his left hamstring cramped up while he was running the bases. He seemed to aggravate it Saturday night when he ran out a sacrifice bunt, but he stayed in the game and got through the sixth unscathed.
''When I was running out of the box, I felt pretty good,'' Freeland said. ''And then I got about a quarter way, halfway up the line where I kind of got a feeling I should probably shut it down. Don't want to do anything that's going to take me out of this game. I got the sacrifice down and did my job that the runner moved over.''
Cardinals starter Wade LeBlanc was also effective, scattering three hits and three walks over 5 2/3 scoreless innings.
''He's been tremendous,'' St. Louis manager Mike Shildt said. ''Multiple pitches, throws where he wants, been able to control counts. He's been phenomenal.''
HOME SWEET HOME
The Rockies are 30-17 at Coors Field with a .281 batting average that is second in the majors. They are 6-31 on the road with a .196 mark that ranks last among the 30 teams.
Cardinals: OF Tyler O'Neill (finger) was out of the starting lineup. Imaging came back clean and he is day-to-day, Shildt said.
Rockies: RHP Robert Stephenson (upper back tightness) should start throwing soon, Black said. ... 1B Matt Adams (elbow) has started full baseball activities.
SHUFFLING THE DECK
The Cardinals claimed reliever Justin Miller from the Washington Nationals and he joined the team before the game. To make roster room, reliever Roel Ramirez was optioned to Triple-A Memphis and ace Jack Flaherty (oblique) was transferred to the 60-day injured list.
St. Louis also traded first baseman John Nogowski to Pittsburgh for cash. Nogowski was designated for assignment Monday.
FOLLOW THE BOUNCING BALL
The Rockies nearly scored in the fourth after second baseman Edmundo Sosa's relay throw to first on a potential double-play ball was wide. Ryan McMahon tried to score from second, but the ball hit off the dugout wall right to Goldschmidt, who made a barehand grab and cut down McMahon at home to end the inning.
Cardinals RHP Carlos Martinez (4-9, 6.38 ERA) faces Colorado RHP German Marquez (7-6, 3.62) on Sunday. It will be the first start for Marquez since he took a no-hitter into the ninth inning on Tuesday.
More AP MLB: https://apnews.com/tag/MLB and https://twitter.com/AP-Sports
Copyright 2021 STATS LLC and Associated Press. Any commercial use or distribution without the express written consent of STATS LLC and Associated Press is strictly prohibited.