It was Francis' 15th win of the season, which set his career high and tied Shawn Estes for the club record for lefties.
More importantly, the victory moved the Rockies (71-66) to within four games of the Wild Card-leading Diamondbacks, who lost, 10-2, Monday to the division-leading Padres. Colorado needs just five wins to reach last season's total.
"It's a lot more fun," Francis said. "Guys are out here playing for the team, playing for the guy next to you and the guy behind you. I think this time last year guys were going out and playing a little bit for themselves, and right now we have no choice but do otherwise. It's a lot of fun."
Francis and the Rockies had a blast in the third inning. Cain (7-14) labored through the third after needing only 31 pitches to get five strikeouts against eight batters through the first 2 1/3 innings.
Francis fouled off four pitches and hit the ninth pitch to right-center for his third hit in his last two games.
"In an ironic kind of way, Francis' at-bat was as dynamic as anything that happened in the inning for me," manager Clint Hurdle said. "A lot of pitches were thrown, and then to hit a double, sometimes that takes the wind out of you, sometimes it doesn't."
If Francis didn't take the wind out of Cain, the rest of the Rockies certainly did.
The Rockies batted around in the third. Willy Taveras followed Francis with a single, Kazuo Matsui knocked in Francis on another single, Matt Holliday had a sacrifice fly, Todd Helton and Garrett Atkins drew back-to-back walks and Brad Hawpe knocked Cain out of the game with a two-run single.
Troy Tulowitzki added another RBI single against Giants reliever Patrick Misch and Chris Iannetta added a two-run triple.
Cain held the Rockies to one run in seven innings last Tuesday in San Francisco and entered Monday with a 5-2 lifetime record and a 2.40 ERA against the Rockies. Cain was 2-0 with a 1.35 ERA against the Rockies in four starts this season.
"We haven't just seen him good the last month, we've seen him good for a long time," Hurdle said. "With one exception of an outing here last year, he's been difficult for us, very challenging."
But Cain was challenged Monday in the shortest start of his Major League career.
Francis (15-6) was also coming off a gem against the Giants last Wednesday. He threw a shutout then, but he did not have his best stuff Monday. However, thanks to his offense, he was good enough and lasted 5 2/3 innings, yielding three runs on nine hits.
Jeremy Affeldt relieved Francis with runners at the corners and was able to get pinch-hitter Ray Durham to fly out.
"Jeff had reached a point, plus Durham's numbers against him are kind of Nintendoish with three homers," Hurdle said. "And Affeldt had faced him a handful of times and Durham hadn't scratched him yet, so it was a matchup thing."
LaTroy Hawkins took over for Affeldt to start the eighth and Hawkins surrendered a two-out walk to Nate Schierholtz.
Hurdle said he was considering Manny Corpas to come in to face pinch-hitter Barry Bonds if Hawkins had not retired Kevin Frandsen. Corpas has not had a four-out save since moving to the closer role July 7.
"That's why they buy the tickets," Hurdle said. "It's always good to see a guy against a guy. Bonds is no easy match for anybody."
Corpas did not have to face Bonds in a 1-2-3 ninth inning, as he recorded his 13th save in 13 opportunities.
Taveras led the Rockies with three hits, including his Major League-leading 35th bunt base hit in the sixth. Todd Helton went 2-for-3 with a ground-rule double.