The matchup between two of the top pitchers in the American League lived up to its billing. Kluber (11-6) held the Mariners to three singles and no walks while striking out eight.
Hernandez (11-3) didn't allow a base runner until Carlos Santana drew a leadoff walk in the fifth. Gomes capped the rally with a bases-loaded double.
Hernandez, who gave up four hits, was pulled after the seventh. He has allowed two runs or fewer and pitched at least seven innings in 14 consecutive starts, a major league record.
Kluber's outstanding performance came hours after the Indians traded opening-day starter Justin Masterson to St. Louis. Cleveland's new ace was so dominating, manager Terry Francona didn't have a reliever warm up the entire game.
The crowd of 14,836 was on its feet for the ninth inning and roared when Kluber retired the side on eight pitches.
Kluber carried a perfect game into the seventh inning of his previous start against Kansas City and has faced only 28 batters in each of his last two starts.
Lonnie Chisenhall followed Santana's walk with a double that rolled up the gap in right-center with Santana stopping at third. Nick Swisher's ground ball got past first baseman Logan Morrison. Second baseman Robinson Cano ranged far to his left to field the ball, but Hernandez didn't cover first base, and Swisher beat Cano to the bag with a head-first dive.
Santana, who held third on the play, was forced out at home on a ground ball, and Gomes slapped a 2-1 pitch over the bag at first to score two runs.
Hernandez, who held the Indians to one hit in eight shutout innings on June 29, struck out five and walked two.
Mariners: Left-hander James Paxton (strained back muscle) looks to be on schedule to start Saturday in Baltimore after completing a 45-pitch bullpen session with no problems Wednesday. Paxton won his first two starts, but has been on the disabled list since April 9. He's 2-0 this season and is 5-0 with a 1.75 ERA in six career starts.
Indians: Thanks to injuries and poor performances, Cleveland's rotation has been in flux. The latest change will come Saturday when left-hander T.J. House will be called up to take Masterson's spot. Right-hander Danny Salazar will pitch Friday against Texas with House going the following night.
Mariners right-hander Chris Young (9-6) takes on Indians righty Zach McAllister (3-6) in the three-game series finale Thursday. Young has won both of his career starts against Cleveland, posting a 0.69 ERA with 11 strikeouts in 13 innings. McAllister's 5.65 ERA is the highest of the eight starters used by the Indians this year.