Verlander won the American League Cy Young Award for Houston in 2019 but made just one appearance during the pandemic-shortened 2020 season because of elbow troubles. He had surgery to repair an ulnar collateral ligament Sept. 30, 2020, and missed all of the 2021 season, his last before the end of his contract with the Astros.
He held a showcase for about 20 teams earlier this month and looked healthy and sharp, Astros general manager James Click said.
The 38-year-old Verlander rejected the Astros' $18.4 million qualifying offer before agreeing to the contract with the Astros.
Houston acquired Verlander before the 2017 trade deadline, and he helped the Astros win the World Series that year. He was named the AL Championship Series MVP by going 2-0 with a 0.56 ERA in the Astros' seven-game series win over the New York Yankees.
He is 43-15 with a 2.45 ERA and 640 strikeouts in 74 starts for the Astros.
Verlander is a two-time Cy Young Award winner, also winning the award in 2011 with the Detroit Tigers when he set career bests with 24 victories and a 2.40 ERA.
The eight-time All-Star is 226-129 in his career with a 3.33 ERA over 17 seasons. He is one of two active pitchers with 3,000 strikeouts (3,013) in his career, along with Max Scherzer, who accomplished the feat this season.
The details of Verlander's contract were first reported by FOX 26 in Houston.
ESPN's Jeff Passan and The Associated Press contributed to this report.