The deal includes a fifth-year club option that could bring the total value of the contract to more than $20 million.
Francis, a 25-year-old left-hander, is 30-25 with a 4.91 ERA in parts of three seasons with Colorado. He led the Rockies in victories (13) for the second consecutive year, and his 199 innings pitched were the third most on the staff behind Aaron Cook and Jason Jennings.
Francis, a native of British Columbia, was Colorado's first pick and the ninth choice overall in the 2002 draft.
"He's a homegrown guy," Jeff Bridich, the Rockies' director of baseball operations, told The Associated Press. "He's showed the ability to improve as a pitcher over the years. There's a lot to like about Jeff."
His contract appears to mark a new direction for the Rockies, who traditionally have not signed players to long-term deals as they enter their salary arbitration years. Francis will be eligible for arbitration after the 2007 season.
Francis became the Rockies' winningest career left-hander last season. He pitched his first career shutout at home against St. Louis on July 24, when he was perfect through five innings and gave up just two hits.
Jerry Crasnick covers baseball for ESPN Insider. Information from The Associated Press was used in this report.