The Red Sox won their sixth in a row, getting a solid seven innings out of starter Jon Lester.
Boston held a 3-2 advantage going into the seventh, then broke the game open against reliever Nick Hagadone.
Napoli came to the plate with runners on first and third and one away. His single to right brought home Jacoby Ellsbury, Daniel Nava then delivered a sacrifice fly and Napoli scored on a base hit by Mike Carp.
Lester (3-0) allowed two runs on four hits in seven innings, striking out five. Andrew Bailey struck out one in a perfect ninth for his second save.
The loss went to Zach McAllister (1-2), who surrendered three runs on six hits in five innings.
Cleveland has dropped four straight.