Cruz, Danny Valencia and Kyle Seager homered in the first two innings, helping the Mariners take a 7-0 lead off Danny Duffy (7-7).
Cruz, who leads the American League with 84 RBIs, hit a three-run drive in a four-run second. He hit his 24th home run in the seventh off Scott Alexander, a shot estimated at 465 feet to center. It was Cruz's 22nd multihomer game, his first this season.
Duffy could have been out of the second inning with Robinson Cano striking out, but catcher Drew Butera was charged with a passed ball, allowing Cano to reach first and for Jean Segura to score from second base. Four pitches later, Cruz homered.
Marco Gonzalez, who was making his Mariners' debut since being acquired in a July 21 with St. Louis, failed to make it through the fifth inning. James Pazos (3-3) won in relief and Edwin Diaz posted his 23rd save in 27 opportunities.
Segura led off the game with a walk and scored on Valencia's 13th home run. Seager homered with two outs in the first.
Whit Merrifield hit a two-run homer in the third. Butera walked and Merrifield singled to lead off the fifth. Lorenzo Cain's double scored Butera and Gonzalez was replaced by Pazos.
Eric Hosmer had an RBI grounder and Melky Cabrera had sacrifice fly, trimming the Mariners' lead to 7-5.
Mike Moustakas hit his 31st homer, a two-run drive, in the eighth.
Duffy left after 5 1/3 innings, yielding a season-worst seven runs, but only three earned, while striking out eight.