The left-hander, who turned 29 on New Year's Day, was 9-12 with a 4.55 ERA in 26 starts last year but won his third straight Gold Glove. In 2015, he went 20-8 with a career-best 2.48 ERA.
Keuchel made $7,275,000 last year. He is eligible for free agency after the 2018 season.
The Astros also avoided arbitration with outfielders George Springer and Jake Marisnick, but utility infielder Marwin Gonzalez, starting pitchers Mike Fiers and Collin McHugh, and reliever Will Harris remain unsigned.
The 27-year-old Springer agreed to a $3.9 million, one-year contract in his first arbitration-eligible offseason. He made just $522,400 last season while hitting .261 with 29 homers and 89 RBIs -- both career highs -- and playing all 162 games.
Marisnick agreed to a one-year contract worth $1.1 million. Considered an excellent fielder, Marisnick struggled at the plate last season, hitting just .209 with five homers and 21 RBIs.
Gonzalez, who made $2 million last year in his first year in arbitration, is asking for $4.2 million, and the Astros are offering $3.25 million. He hit .254 with 13 homers and 51 RBIs while appearing at first base, second base, third base, shortstop, designated hitter and in the outfield last season.
Fiers was offered $3 million but is asking for $3.9 million after making $524,100 last season. The right-hander, who threw a no-hitter in 2015, won a career-high 11 games last season with a 4.48 ERA.
McHugh, who made $529,000 last year, is asking for $3.85 million but was offered $3.35 million. The 29-year-old went 13-10 with a 4.34 ERA in a career-high 33 starts last year in his third season in Houston.
Harris is in his first year of arbitration eligibility after making his first All-Star Game in 2016. He posted a 2.25 ERA in 66 games. Harris asked for $2.3 million, and the Astros offered him $1.95 million after the right-hander made $525,500 last season.