Perez appeared in 51 games last season for the Indians, who signed the left-hander in June and added him to one of baseball's best bullpens. Cleveland now needs Perez more than ever after losing closer Cody Allen and elite lefty Andrew Miller as free agents this winter.
Perez's deal includes a vesting option for 2020.
Perez, 37, went 1-1 with a 1.39 ERA for the three-time defending American League Central champions in 2018. He recorded 15 holds and provided scoreless relief in 46 appearances.
Perez spent the first two months of last season in the New York Yankees organization before he was granted his release and signed with Cleveland. He has also pitched for San Diego, Pittsburgh, the Mets, Seattle, Arizona, Houston and Washington.
Perez originally signed with the Padres in 1999.