The victory -- which was in doubt until Rafael Betancourt blew a 92-mph fastball by a looking Jon Jay to notch his 13th save -- was the seventh in the last 25 games for the Rockies (31-49), who entered the day tied with the Cubs for baseball's worst record. The Rockies prevented the Cardinals (42-39) from making a move on the National League Central-leading Reds.
Colvin's three-run homer off Joe Kelly (1-1), his second long ball in as many games against the Cards in what will be a four-game set, gave the Rockies a one-run lead in the third inning.
Colvin -- who came with infielder DJ LeMahieu in exchange for infielder Ian Stewart and Minor League pitcher Casey Weathers after hitting .150 last season with Chicago -- has pushed his way into regular playing time with the Rockies. He found his swing during Spring Training, and since June 9 he has seven home runs and 22 RBIs in 18 games, including 16 starts.
The homer came on a changeup -- the type of pitch that would have given him trouble last season, with his pull-conscious swing.
"That's a changeup, and that's exactly what I wanted to do there. I don't want to hook it foul, so I was looking the other way, and I ended up pulling it," Colvin said.
Said Kelly: "The right pitch. I wanted it. I just threw it bad."
Francis (2-1), a onetime Rockies ace who rejoined the club early last month after toiling for the Reds at Triple-A Louisville, allowed two runs or fewer for the fourth straight outing. Matt Holliday, a teammate of Francis' on the 2007 NL champion Rockies, hit a two-run homer in the first, but Francis handled the Cards thereafter.
"I love being here. I love playing for this team," said Francis, who went 6-16 with a 4.82 ERA in 183 innings for the Royals last year. "They gave me a shot, and so far I've pitched well to take advantage of that. Hopefully, it sticks."
The toughest inning for Francis was the third, when with two out, Jay and Holliday singled, and Carlos Beltran walked. But Francis shattered Allen Craig's bat and escaped the jam on the resulting line drive to third baseman Chris Nelson.
Francis joined the Rockies on June 9 and gave up 10 hits in 3 1/3 innings in a loss to the Angels, but the Rockies have won his five starts since.
Francis, who threw 77 pitches on Tuesday, has been the symbol of the four-starter, pitch-limit system. The system has drawn questions, but the Rockies say that all they need is modest starting pitching.
The club is 17-10 when the starter goes at least three innings and gives up three runs or fewer, 19-11 when the starter goes at least four with three runs or fewer, 20-15 when the starter goes five and yields four runs or fewer, and 22-20 when the starter goes four and allows four runs or fewer. The problem has been the many starts in which the starter didn't meet those standards.
Francis improved to 6-1 with a 3.09 ERA in 11 career games, including 10 starts, against the Cardinals.
After Colvin's homer off Kelly, the Rockies loaded the bases with two down. But Kelly reacted quickly to snag Nelson's line drive, and he also got Carlos Gonzalez -- who singled in the third to extend his hitting streak to 11 games -- to pop up to shortstop Rafael Furcal to end the fourth with bases full.
The Cards had two on and two out in the seventh when Matt Belisle replaced Rex Brothers and got Holliday to bounce out to Nelson. With two out and runners at the corners in a difficult ninth, Betancourt, who had blown three of his previous five chances, bested Jay on an 0-2 pitch.