Cruz's three-run shot to center field in the fourth inning was his eighth homer this season against the Angels, the most a player has had in one year against the franchise, according to Baseball-Reference.
Leake (10-9) threw a season-high 114 pitches (80 strikes), allowing one run and four hits with a walk and five strikeouts. His only costly mistake came in the seventh when Justin Upton homered to left.
After going 0-5 in July and August, Leake has won two straight starts for the first time since June 12. It was also the ninth time in 29 starts this season that the right-hander has gone seven innings or more.
Cruz, Mitch Haniger, Robinson Cano and Kyle Seager each had two hits for Seattle, which got off to a good start on a long trip after losing two in a row at home to San Diego.
Angels starter Odrisamer Despaigne (0-3) went only one-plus inning, allowing three runs and four hits while facing eight batters. He promptly gave up two runs in the first as the first three batters reached base. Haniger led off the game with a double and was driven in two batters later when Cano singled. A sacrifice fly by Ryon Healy scored Denard Span.
Haniger's sacrifice fly with the bases loaded in the second scored Ben Gamel and extended the lead to 3-0.
The Mariners added two runs in the ninth. Seager's single scored Cano, and Cruz came home on a bases-loaded walk.
Upton had two hits and Mike Trout added a pair of doubles for the Angels, who had won six of seven.
Los Angeles got a run in the ninth when Trout scored on Jose Fernandez's fielder's choice with the bases loaded.
It was the second time in three games that the Angels essentially resorted to a bullpen game. Tuesday's was planned as eight pitchers combined on a two-hitter to beat Texas 1-0. Los Angeles manager Mike Scioscia said Thursday that it's likely he will have to go with another bullpen game next week.
GOLDEN HOME RUN FOR CRUZ
Cruz's home run was his 50th against the Angels, which gave him the second-most against the franchise. Alex Rodriguez has the record with 70.
Mariners: SS Jean Segura missed his third straight game with a flu-like illness, according to manager Scott Servais. Segura did take part in batting practice and could return to the lineup sometime this weekend. Left fielder Cameron Maybin was also out of the lineup for the second straight day due to illness.
Angels: Tyler Skaggs threw a 48-pitch simulated game in Arizona. The left-hander has been on the disabled list since Aug. 12 due to a groin strain. Scioscia said Skaggs will return to Anaheim to determine his next step.
Mariners: With lefty James Paxton scratched due to pneumonia, Seattle had not announced a starter for Friday. Servais said it will be a bullpen game.
Angels: Matt Shoemaker (2-0, 3.45 ERA) will make his first start at home since June 14, 2017. The right-hander has missed most of the season after injuring his right forearm on March 31 against Oakland.
More AP MLB: https://apnews.com/tag/MLB and https://twitter.com/AP-Sports