Austin Hedges, Owen Miller and Amed Rosario homered to help Cleveland overcome a five-run deficit.
Zavala became the first player in big league history to hit his first three career home runs in the same game, according to Elias Sports Bureau.
The 27-year-old catcher played his 18th game in the majors. Batting ninth, Zavala hit a solo homer in the third, a grand slam in the fourth and a solo drive in the seventh.
With a chance to become the 19th player to hit a record-tying four homers in a game, Zavala singled in the eighth.