SEATTLE — Marco Gonzales sent flocks of Blue Jays fans back north of the border with a sour taste in their mouths.

Gonzales pitched three-hit ball over seven innings to get his career-best 14th win, Dylan Moore hit a solo homer and the Seattle Mariners beat Toronto 3-1 Sunday.

"Marco brought his A-game today," Mariners manager Scott Servais said. "He was outstanding. Had a lot of crispness and ride to his fastball today. ... Great effort. He had all of his pitches working."

Gonzales (14-10) allowed a run and struck out five. In his last six starts at home, the left-hander is 5-0, posting a 2.14 ERA and going at least six innings and allowing two or fewer runs each time. His effort made it a disappointing day for Toronto fans who travelled down in droves for the weekend series in Seattle.

Matt Magill allowed a one-out double to Derek Fisher in the ninth but struck out Teoscar Hernandez and got Brandon Drury to fly out to first baseman Austin Nola in foul territory for his fourth save, giving Seattle its fourth straight series victory.

Moore started the scoring with Seattle's first hit, sending a 2-1 pitch from Clay Buchholz over the left-centre field wall for his sixth home run in his first at-bat since August 18.

Hot-hitting Kyle Seager hit an RBI double with one out in the third, scoring J.P. Crawford to give Seattle a 2-0 lead. Seager is batting .347 in 20 games this month with seven doubles and 22 RBIs.

Toronto took until the sixth to break through for its only run. Bo Bichette led off the inning with a double, his 22nd extra base hit in 26 career games, and later scored on a two-out RBI single by Rowdy Tellez.

Bichette collected eight hits during the three-game series and leads the majors in extra-base hits, doubles, and total bases since his debut on July 29.

Omar Narvaez gave the Mariners an insurance run in the seventh with a short sacrifice fly to left, scoring Nola from third. Nola led off the inning with a single and advanced to second when reliever Jason Adam fielded the short grounder down the third base line and tossed the ball over the head of Rowdy Tellez at first base. Nola then advanced to third on a balk and slid around the tag of catcher Reese McGuire on Narvaez's flyout to Fisher in left for the game's final run.

"Fly ball to left field and we catch the ball flat-footed, and we cannot throw a guy out from 150 feet," Blue Jays manager Charlie Montoyo said. "It's the little things like that, that's what we need to get better at to start winning games. And we're gonna let them know. We're going to let our kids know that's not good enough, let's go."

Sam Tuivailala retired the first two batters he faced in the eighth but a walk to Cavan Biggio followed by a double by Vladimir Guerrero Jr. put the go-ahead run at the plate for the Blue Jays. Tellez couldn't deliver, as Moore's sliding catch in left ended Toronto's rally.

"Those are the plays you got to make to win a 3-1 game," Servais said of Moore's catch.

Buchholz was activated from the 60-day injured list prior to the game and lasted six innings in his first start since May 5, allowing two runs and three hits while striking out three. Buchholz started the season on the IL with a right elbow strain, then suffered a Grade 2 shoulder strain in May, but looked strong in 65 pitches Sunday.

"The last three months has been a lot of work every day to get back to this point," Buchholz said. "I felt good about it. (Gonzales) was just better."

TRAINERS ROOM

Blue Jays: Toronto activated Buchholz (shoulder) and RHP Ken Giles (paternity) and optioned RHPs Brock Stewart and Justin Shafer to Triple-A Buffalo. Giles pitched a scoreless eighth, striking out two.

UP NEXT

Toronto: The Jays have yet to decide on a starter for their series opener against the Braves on Tuesday.

Seattle: The Mariners will start an opener before turning to LHP Tommy Millone (3-7, 4.84 ERA) in their series opener against the AL-leading Yankees.

___

More AP MLB: https://apnews.com/MLB and https://twitter.com/AP_Sports