Napoli and Santana went back-to-back with two out in the top of the sixth to erase a 3-2 Cincinnati lead.
But Zack Cozart doubled home a pair of runs in the seventh off Indians reliever Cody Allen to again give the Reds the edge as they scored four times in the inning.
Eugenio Suarez homered and Blake Trahan doubled off Cleveland right-hander Carlos Carrasco, who pitched five innings, allowing three runs on six hits and two wild pitches, one of them allowing a run to score in the fifth inning.
Melville worked six innings, pitching in and out of jams, allowing the four runs on seven hits, walking none and striking out five.
The homers for Gomes and Napoli were their fourth each of the spring.
"I felt strong, throwing strike one and getting ahead," Melville said. "I thought I threw really well."
Up next for Indians: Right-hander Cody Anderson is scheduled to take the mound on Sunday, when the Indians host the Brewers in a 4:05 p.m. ET Cactus League clash at Goodyear Ballpark. Cleveland's battle for the fifth spot in the rotation is down to Anderson and righty Josh Tomlin. Relievers Kyle Crockett, Jeff Manship and Joba Chamberlain are also penciled in to pitch for the Tribe.
Up next for Reds: Cincinnati has a 4:05 p.m. ET game Sunday against the Dodgers at Camelback Ranch. Alfredo Simon gets his second start of the spring. Simon has been the Reds' best starter since signing as a free agent on March 17, pitching three innings of shutout, no-hit ball and striking out four on Tuesday vs. the Cubs.