Fox 26 in Houston was first to report that Brantley and the Astros had agreed to the deal.
Brantley, 33, continues to boast a high contact rate, low strikeout ratio and polish at the plate. In 46 games with the Astros in 2020, alternating between left field and DH, Brantley hit. 300, with five homers, 22 RBIs and an OPS of .840.
He has hit at least .300 in five seasons since 2014, tied with four others for the most such seasons in baseball in that time span. He also has struck out in just 10.1% of his plate appearances since 2014, third best in baseball in that time span, with a minimum of 2,000 plate appearances.
Brantley also signed a two-year, $32 million contract when he joined the Astros before the 2019 season.
Injuries have troubled Brantley over his 12-year career with Cleveland and the Astros, in which Brantley has a .297 average, 114 homers, 640 RBIs and a .794 OPS. He has been an All-Star four times, and in 2014 he finished third in the MVP voting.
Earlier, ESPN had reported that Brantley had agreed to a deal with the Toronto Blue Jays, who had already reached a six-year, $150 million deal with former Astros teammate George Springer, sources confirmed.