Hernandez, 29, became a free agent when he wasn't tendered a contract by the Philadelphia Phillies after a season in which he hit .279 with 14 home runs and a career-high 71 RBIs.
He avoided arbitration in 2019 by reaching a one-year, $7.75 million deal with Philadelphia, and he was again eligible for arbitration had he signed after the season.
Hernandez had been a starter with the Phillies since 2015, when he replaced Chase Utley. He led the team with a .294 batting average in both 2016 and 2017, then had a career-high 15 home runs in 2018. He has averaged 2.5 wins above replacement over the past four seasons.
Hernandez had been with the Phillies since signing with them out of Venezuela in 2006 at the age of 16. He has a .277 career average with 253 RBIs and a .352 on-base percentage.
With the addition of Hernandez, the Indians will likely keep Jose Ramirez at third base. The club considered sliding Ramirez over to the right side of the infield and pairing him with All-Star shortstop Francisco Lindor, whose name continues to be bounced around in trade rumors.
The Associated Press contributed to this report.