"It was the third time I've been beat on that pitch this year, so I've got to reevaluate throwing it there," said Perkins, who has given up just 10 homers over the last two seasons. "They've been hitting the fastball down there, so I've got to think about that this winter."
Duensing was also just one out away from getting out of the 10th, but gave up an RBI single to Gose to score Adeiny Hechevarria for Minnesota's fifth walk-off loss of the year.
"That's pretty special, to actually contribute in that way to help the team win," Gose said. "I was really just trying to put the ball in play and give myself a chance -- wasn't really thinking base hit or anything, just put it in play and find a way to get on."
The loss spoiled a strong offensive performance from Trevor Plouffe, who got the Twins on the board with a two-run blast to center field in the second off of left-hander Aaron Laffey, before adding an RBI double in the third. His homer was his 24th of the season, while his double was his 18th, to tie a career high.
It helped back right-hander Esmerling Vasquez, who gave up three runs on six hits and three walks over 5 2/3 innings, but was stuck with a no-decision.
"It was a good outing in my last outing," said Vasquez, who finishes the year winless with a 5.68 ERA in six starts. "I went in there and made some good pitches and tried to win the game."
The Blue Jays struck first against Vasquez with an RBI single from Adam Lind in the first inning, before Vasquez settled down.
But Toronto got within a run of the Twins on a two-run double from Jeff Mathis in the sixth with the bases loaded and two outs to knock Vasquez from the game. The double came after Plouffe threw home with the bases loaded and one out instead of going for a double play.
"I think a failed double play hurt us," Twins manager Gardenhire said. "We went home with it, but in my opinion we had to turn two there, and it ended up costing us to let them get into striking range."
Laffey, meanwhile, surrendered four runs (three earned) on eight hits over five innings. He wasn't helped by his defense in the fifth, when Jamey Carroll reached second on a throwing error from shortstop Hechavarria. Joe Mauer would make Toronto pay for the mistake with an RBI single for his 85th RBI of the year. He went 1-for-5 to see his batting average dip to .322, and he remains behind Miguel Cabrera in the American League batting race.
The Twins added an insurance run in the seventh on an RBI single from Carroll after Ben Revere singled and stole his 40th base of the year. Revere became the first Minnesota player to steal 40 bases since Chuck Knoblauch stole 62 in 1997.
But Minnesota couldn't come through with the bases loaded and two outs in the 10th inning, as Pedro Florimon struck out looking against reliever Brandon Lyon.
"We had some chances there," Gardenhire said. "But we didn't have good at-bats to get the runs then."