Marlon Byrd hit a two-run homer in a five-run sixth and the Indians erased a 4-0 deficit while recording season highs in runs and hits.
Cincinnati scored four times in the first three innings, but Cleveland tied it with a four-run third and added three in the fourth.
Kipnis' two-run single broke a 4-all tie and helped the Indians take a three-run lead in the fourth. The Reds cut the lead to one in the fifth, but Gomes, homering for the third straight game, and Byrd, who had three hits, unloaded off Layne Somsen.
Gomes, who came into the game batting .167, was 2 for 4 and had a sacrifice fly in the seventh.
Tommy Hunter (1-1) pitched 1 2/3 innings for the win.
John Lamb (0-1) couldn't hold the early lead. The left-hander allowed seven runs in four innings.
Lindor's two-run double, along with RBI singles by Napoli and Rajai Davis, tied it in the third.
Jose Ramirez doubled to lead off and Davis drew a two-out walk in the fourth. Kipnis' line drive fell in center field to easily score Ramirez. Davis, who was running on the pitch, headed home and was originally called out by plate umpire Paul Emmel.
Indians manager Terry Francona challenged the call and the replay clearly showed catcher Ramon Cabrera never tagged Davis as he crossed home plate. The ruling was changed and Cleveland led 6-4.
Cody Anderson allowed six runs, including two homers, in 4 1/3 innings. The right-hander has given up 10 home runs in 32 2/3 innings
Phillips' RBI double put Cincinnati ahead in the first. Duvall hit a solo homer in the second while Suarez added a two-run shot in the third.
Duvall's one-out homer cleared the 19-foot wall in left field. Suarez homered to dead center, his team-high eighth, and pushed the lead to 4-0.
Jay Bruce had a two-run single in the fifth.
Reds: RHP Jon Moscot (inflammation in non-throwing shoulder) began a rehabilitation assignment Sunday with Triple A-Louisville, allowing two runs in five innings at Columbus.