Jorge De La Rosa (7-6) allowed five runs, four earned, in seven innings. He is the first Rockies starter to earn a win since June 12.
Morneau had an RBI single in the first and a two-run single in the seventh that gave Colorado some breathing room.
The Rockies finished with 17 hits one night after managing just three when they were shut out at home for the first time in nearly a year.
Jhonny Peralta hit a two-run homer for St. Louis and Matt Holliday had another productive day at Coors Field against his former team, going 2 for 5. He is hitting .545 in his last five games at this park.
De La Rosa finished strong, striking out Allen Craig to end the seventh with Holliday on first.
St. Louis had something brewing in the eighth with the bases loaded and two outs. But Adam Ottavino struck out pinch-hitter Jon Jay to end the threat.
Pinch-hitter Drew Stubbs added an insurance run in the bottom half of the inning with a solo homer to left. Charlie Blackmon later added an RBI single.
LaTroy Hawkins finished the ninth in a non-save situation. Brandon Barnes made a diving catch deep in right to bring what was left of the crowd to its feet in appreciation.
The Cardinals scored two runs courtesy of crazy bounces. In the fourth, a hustling Peter Bourjos scored from second on Tony Cruz's high bouncer off the plate to second baseman D. J. LeMahieu. An inning later, a slow roller possibly grazed Holliday's arm — replays were inconclusive — as he sprinted toward third, the ball taking a funny hop past Troy Tulowitzki and rolling into left field.
Holliday easily ran home as Tulowitzki protested. Rockies manager Walt Weiss came out to argue the ruling, but the play wasn't reviewed and the run stood to cut Colorado's lead to 6-5.
The Cardinals' rotation may have taken another hit with Miller leaving the game. The right-hander arched his back in discomfort soon after delivering a pitch to De La Rosa.
Manager Mike Matheny and a trainer instantly trotted out to check on Miller, who took a few warm-up tosses before being taken out for Greenwood.
Miller went 2 2-3 innings, surrendering three runs and six hits. He walked five.
Colorado had four hits in the first inning — one more than they had the entire game Monday — and scored three times.
NOTES: Cardinals LHP Marco Gonzales will make his major league debut Wednesday. Gonzales was a high school standout in nearby Fort Collins and his dad, Frank Gonzales, is a pitching coach in the Rockies' minor league system. ... Rockies RHP Christian Bergman has a broken left hand and will not make his start Wednesday. The Rockies are expected to bring up LHP Yohan Flande from Triple-A Colorado Springs. ... Blackmon, Morneau and LeMahieu all had three hits.
Link to box score: Colorado (35-42) 10, St. Louis (42-36) 5
Join the pre-game, in-game and post-game discussion about each contest at The Cardinal Nation message board.