The left-hander struck out six, won for the sixth time in seven starts and lowered his ERA for the season to 2.43. Lee has a shot at giving Cleveland its second straight Cy Young Award winner. CC Sabathia, traded to Milwaukee on July 7, won the award a year ago.
The Angels had not played at Progressive Field since Aug. 10, 2006. Their only scheduled series in Cleveland last season was played at Milwaukee's Miller Park because of an April snowstorm in Ohio.
Cleveland scored twice in the sixth to take a 3-2 lead. Shin-Soo Choo's one-out double off Jered Weaver got it started.
Manager Mike Scioscia called upon Jose Arredondo (4-1), who had combined with Weaver to allow no hits in an eight-inning loss June 28, but the right-hander struggled.
Arredondo walked Kelly Shoppach and yielded a tying RBI single to Ryan Garko. Walks to pinch-hitter David Dellucci and Asdrubal Cabrera forced in Shoppach.
Arredondo took his first career loss. He came in with an 0.92 ERA in 34 outings since being called up in May.
Chone Figgins singled off Lee to start the game, moved up on a bunt by Erick Aybar and scored on a single to right by Mark Teixeira.
Cleveland tied it at 1 in the fourth on consecutive doubles by Ben Francisco and Jhonny Peralta, who rounded too far around second and was thrown out by Vladimir Guerrero after the Angels right fielder tracked down his drive off the wall.
Juan Rivera hit Lee's first pitch of the fifth for his eighth homer and 2-1 lead. Rivera is 5-for-12 with three homers in his career against Lee.
The Indians turned double plays in four straight innings, including one started by Lee. After walking Jeff Mathis in the fifth, Lee lunged off the mound to backhand a bunt by Figgins and throw to first to easily double off Mathis.