Mike Klis of 9NEWS reported that the contract is for at least $36 million, and the Denver Post reported Keenum will have an annual salary approaching $20 million.
"Case is a great fit for us," Broncos general manager John Elway said in a statement issued by the team. "He's coming off a tremendous season last year and has obviously been through a lot of situations throughout his entire career. Along with that experience, his leadership and competitiveness are what you look for in a quarterback. Case has fought and battled for everything that he's earned in the NFL, and it's exciting to add someone with that type of mentality to our team."
Denver head coach Vance Joseph also offered a statement, which read: "Case is perfect for our team, both as a player and as a person. He's playing the best football of his career right now and has gotten better with every opportunity he's had. Being around him in Houston, Case is a tremendous person and teammate with strong leadership skills and a terrific work ethic. He'll be great in our locker room, and we're all looking forward to having him as a Bronco."
The Broncos were reportedly considering fellow quarterback Kirk Cousins before settling on Keenum, who posted career highs in completions (325), attempts (481), completion percentage (67.6), passing yards (3,547) and touchdowns (22) in 2017 with the Minnesota Vikings.
The 30-year-old started 14 regular-season games and both postseason contests last season while leading the Vikings to within one win of the Super Bowl. The former journeyman made $2 million on a one-year deal in 2017.
The Broncos limped to a 5-11 finish in 2017 with an offense that finished the season tied for 26th in scoring. Trevor Siemian, Brock Osweiler and Paxton Lynch combined to complete just 58.7 percent of their passes for 3,668 yards with 19 touchdowns and 22 interceptions for a 73.0 passer rating.
Lynch is under contract and 2017 seventh-round selection Chad Kelly, who is the nephew of Pro Football Hall of Famer Jim Kelly, is also on Denver's roster.
The Broncos -- notably Gary Kubiak -- are familiar with Keenum during his time in Houston in 2013.
Keenum started eight games that season, which wound up being Kubiak's final year as head coach with the Texans. Kubiak has since taken on a role in the Broncos' front office this offseason.