SEATTLE -- Tyler Cloyd waited nearly four years for this moment.
Making his first appearance in the major leagues since Sept. 29, 2013, the 30-year-old right-hander pitched one inning of relief to get the victory as the Seattle Mariners defeated the Toronto Blue Jays 4-2 on Friday night at Safeco Field.
Jarrod Dyson scored one run, drove in what proved to be the winner and made a key defensive play for the Mariners (31-31), who reached .500 for the third time this season.
Reliever Nick Vincent struck out the side after allowing a leadoff single in the eighth inning and Edwin Diaz pitched the ninth for his 10th save for Seattle, which has won 10 of its past 12 games.
Jose Bautista hit a solo home run for the Blue Jays (29-32), who dropped to 1-3 on their six-game trip. Toronto has scored three runs or fewer in five of its past six games.
Cloyd (1-0) pitched for the Philadelphia Phillies in 2012-13, going 4-9 in 19 games, including 17 starts. After spending the 2015 season in Korea, he returned to the United States in 2016 but injured his arm while pitching for the New York Yankees' Triple-A affiliate in Scranton/Wilkes-Barre and underwent Tommy John surgery.
Cloyd was pitching in the independent Atlantic League when the Mariners purchased his contract on May 12 and assigned him to Triple-A Tacoma. He was called up June 2 but didn't see any action until Friday, when he relieved starter Sam Gaviglio in the seventh inning.
"I've been a little antsy," Cloyd said. "I knew I had to be ready. The ballgame on the line and those guys are good hitters."
Cloyd struck out Ezequiel Carrera to start the inning and got Ryan Goins to ground out to short.
With two outs, Kevin Pillar singled down the right-field line. Josh Donaldson then doubled into left center as Dyson made a diving attempt but the ball glanced off his glove. Dyson smothered the ball with his bare hand and got it back in quickly to shortstop Taylor Motter, who made a strong throw to the plate. Catcher Mike Zunino applied the tag on Pillar to end the inning.
"Unbelievable play," Cloyd said. "Dice did a great job knocking it down and Motter threw a strike to Z."
That seemed to spark the Mariners, who took the lead with two runs in the bottom of the seventh. Robinson Cano led off with a double off the center-field wall against Toronto starter Joe Biagini (1-5). After a one-out walk to Kyle Seager, Danny Valencia grounded a run-scoring single into left field to make it 2-2.
"Valencia's ball just found a hole," Blue Jays manager John Gibbons said. "I thought (Biagini) was great, really against one of the top lineups top to bottom you can find in the American League."
A walk to Zunino loaded the bases and Dyson lined an RBI single to center. Valencia was thrown out at the plate trying to score a second run on the hit.
Seattle added an insurance run in the eighth on Seager's two-out RBI single off reliever Aaron Loup.
"The best thing about this team, there's no hitting the panic button," Motter said.
After getting out of a bases-loaded jam in the first, Gaviglio allowed an unearned in the second.
Russell Martin led off with a walk, advanced to second on a passed ball and moved to third when Carrera lined a single off the glove of Valencia at first base.
Goins then grounded to first and Valencia stumbled as he attempted to start a double play. Valencia was able to recover and get the out at second, but Martin scored on the play. Gaviglio induced Pillar to ground into an inning-ending double play.
With one out in the top of the third, Bautista hit a 413-foot homer down the left-field line to make it 2-0. It was Bautista's 11th home run of the season.
The Mariners got a run back in the bottom of the inning as Dyson singled to right field with one out, stole second and moved to third on a wild pitch. Ben Gamel drove Dyson home with a two-out single.
Gaviglio went six innings, tying his career high. He allowed two runs (one earned) and six hits. He walked three and struck out five.
"Gaviglio was on the edge a little early but kept it in check and gave us a chance to win," Mariners manager Scott Servais said.
NOTES: Mariners DH Nelson Cruz returned to the lineup after missing two games with a right calf injury. He went 0-for-3 with an intentional walk. ... Seattle's bullpen threw three scoreless innings, extending its streak to 13 scoreless innings in the past four games. ... Toronto 3B Josh Donaldson went 2-for-4 with a double and has reached base safely in 10 consecutive games. ... Blue Jays RF Jose Bautista has homered in three of five games against the Mariners this season. ... Blue Jays RHP Marcus Stroman (6-2, 3.25 ERA) is scheduled to start Saturday against Mariners LHP Ariel Miranda (6-2, 3.74).