Rookie left-hander Marco Gonzales had a strong start to his major league career before stumbling in the fourth inning, but the Cardinals' bats helped him with a late rally.
"A great win," Cardinals manager Mike Matheny said. "It was one of my favorite wins."
The game featured the major league debuts of both starting pitchers. Gonzales was sharp early before faltering. Colorado's Yohan Flande also started well before getting hit hard in his last inning.
"I don't have any answers for today. I feel horrible that I gave it up," Ottavino said. "I thought I made good pitches and they found holes."
St. Louis added two more runs in the ninth on two of the club's four sacrifice flies.
The Cardinals then had to grind out a win in the bottom of the inning when Rosenthal walked two batters to bring the tying run to the plate. He struck out Troy Tulowitzki on a 100-mph fastball, the 11th pitch of the at-bat, before Morneau flied out to center to end it.
"Wow, that's just like two heavyweights standing in the middle of the ring just swinging at each other," Matheny said. "That was impressive. That at-bat was pretty impressive on his side. Trevor stayed with it."
Pitching near where he was an all-state player for Rocky Mountain High School in Fort Collins, Colorado, from 2007-10, Gonzales was unhittable the first time through the order.
At one point he threw 12 straight strikes, and 30 of his first 37 pitches were strikes. He had only one blemish, a one-out walk to DJ LeMahieu in the second.
"It was the best day of my life right there," Gonzales said. "It was a blast. A lot of family that I haven't seen in a while, a lot of friends flying in from everywhere. I'm very grateful for it."
The Cardinal-friendly crowd cheered throughout but gave him his loudest ovation when he struck out Tulowitzki on three changeups in the first inning.
"Obviously that caught everybody's attention," Matheny said. "A couple of guys went up there hunting it after that. It's one of the better changeups we have in our organization, and he's able to locate it."
Things unraveled for him in the fourth.
Stubbs hit the first pitch of the inning into the seats in left to tie it 1-1. After Tulowitzki fouled out, the next five batters reached base. Corey Dickerson had a two-run double and scored on LeMahieu's single, and Josh Rutledge came home on Flande's groundout that made it 5-1.
"Three innings strong and the fourth inning just couldn't locate offspeed stuff," Gonzales said. "From there hitters eliminate it. When your fastball's elevated it doesn't help, either. It was really one bad inning, a couple of good swings."
Flande is the fourth starting pitcher this month to make his major league debut for the Rockies. Injuries to the staff forced the call-ups but two of those pitchers -- Eddie Butler and Christian Bergman -- are now injured.
Flande allowed just one run through the first four innings but the Cardinals rallied for three in the fifth. Mark Ellis scored on a sacrifice fly, and Adams followed Holliday's double with his third home run of the series to make it 5-4.
Flande was touched for four runs and six hits, and he struck out four in five innings.
"Flande was outstanding," Rockies manager Walt Weiss said. "I thought he was very good. Gonzales was outstanding the first time through the lineup. We got a few off him, but he hung in, gave his team a chance to win."
Gonzales also pitched five innings. He allowed five runs and seven hits, and struck out three. He doubled and scored the Cardinals' first run in the third inning.
"I have no idea how I hit that pitch," he said. "It was a pretty good slider."
The Cardinals designated SS Pete Kozma for assignment and moved RHP Joe Kelly (left hamstring strain) to the 60-day DL. ... The Rockies placed Bergman (fractured left wrist) on the 60-day DL. ... Butler (right rotator cuff inflammation) will be shut down for six days before he begins throwing again. ... St. Louis RHP Adam Wainwright (10-3, 2.08) will open a four-game series at the Los Angeles Dodgers on Thursday. Colorado LHP Christian Friedrich (0-1, 6.00) will pitch the first of the Rockies' four-game set at Milwaukee on Thursday.