Duffy and the Kansas City Royals ended a 10-game winning streak by Sanchez, topping Toronto 4-2 Saturday night.
Duffy (8-1) struck out a team-record 16 and permitted just one hit over eight innings at Tampa Bay in his last start. He won his seventh straight decision, holding the Blue Jays to two runs and five hits over 6 2-3 innings.
"I think the last start was probably the best start of my career," Duffy said. "On days like that, I had everything working. Today not so much. Today, I didn’t have what I had the last time out, but I had enough. It wasn’t as good as the last one, but it was good enough."
Sanchez (11-2) hadn’t lost since April 22 against Oakland. He allowed four runs and nine hits in six innings.
Sanchez still leads the AL with a 2.85 ERA.
The Blue Jays opted earlier this week to go with a six-man rotation instead of putting the 24-year-old Sanchez in the bullpen to limit his innings.
"It’s not like I thought he was out there distracted or rattled or anything," Blue Jays manager John Gibbons said. "They just beat him. Nobody’s invincible."
Devon Travis led off the game with a home run for the second straight night. He also had an RBI single in the fifth after Kevin Pillar doubled.
"It was a minor frustration, leaving a changeup up after I’ve been so good with my changeup this entire season," Duffy said of Travis’ leadoff homer. "It was frustrating, but you don’t let it affect the next hitter and I didn’t, just kind of moved on."
Eric Hosmer hit a two-out, two-run single in a three-run fifth that made it 3-2.
"We had four hits that inning and three of them were infield hits," Royals manager Ned Yost said. "Hos came through. It was a big two-out hit."
Sanchez pitched only 102 innings last year, including 9 2-3 in the minors on a rehab assignment after a shoulder injury. The All-Star righty has thrown 145 1-3 innings this season.
Alcides Escobar’s infield single scored Kansas City’s first run.
Raul Mondesi had an RBI triple in the sixth for his first extra-base hit in his 11th game in the majors.
The Royals scored more than three runs in a game for the first time in 10 games.
Kelvin Herrera picked up his fourth save in six chances, working a perfect ninth.
Travis became the first Blue Jays player to hit a leadoff home run in back-to-back game since Jose Cruz Jr. on April 22-23, 2000, against the Yankees. Mookie Betts of the Red Sox was the last to accomplish that feat in the majors, doing it last month.
Royals: LHP Mike Minor (recovery from labrum surgery) is slated to throw five or six innings, up to 80 pitches, in a Sunday rehab start for Triple-A Omaha. In his prior two rehab starts, he has allowed no earned runs and struck out eight in 5 2-3 innings.
Blue Jays: RHP Marcus Stroman, who struck out a career-best 13 Astros on Monday, starts the series finale.
Royals: RHP Yordano Ventura is looking for his first victory since June 17. He is 0-5 with a 5.40 ERA in his past seven starts.