Happ tossed 6 1/3 innings in the win, allowing three runs on seven hits. Brian Dozier clubbed a solo shot in the fifth, while Joe Mauer (sacrifice fly) and Chris Gimenez (single) each drove in a run in the third and fourth, respectively. Happ finished with five strikeouts and one walk to notch his third straight victory.
"[Happ] was really, really good," Blue Jays manager John Gibbons said. "He's been on a nice little roll, and they are swinging the bats over there. They're a dangerous team. They can do a lot of things, but he got some big outs."
The Blue Jays rallied with two runs in the seventh off Bartolo Colon, who was handed the loss on Big Sexy Night at Target Field. Colon was pulled after two batters in the seventh, and was charged with four runs on five hits in his six-plus innings. Toronto catcher Russell Martin delivered a pair of doubles, including the game-tying knock, in his second game back since returning from the disabled list after recovering from an oblique injury.
"He just couldn't get the ball down on Martin, and the double was a big hit," Twins manager Paul Molitor said of the decision to stick with Colon to face Martin in the seventh. "I just thought that his history with Martin, and being concerned a bit about the running game, I thought that was a better option for a potential ground ball."
Meanwhile, both Pillar and Donaldson recorded solo homers off Colon. Pillar led off the fifth with his 16th blast of the season, and Donaldson -- who finished a triple shy of the cycle -- started off the sixth with his 26th home run. According to Statcast™, both homers had a hit probability of 24 percent.
Blue Jays closer Roberto Osuna pitched a clean ninth for his 36th save of the season and first since blowing back-to-back save chances on Sept. 3 and Sept. 5.
MOMENTS THAT MATTERED
Jays rally in seventh: Colon was pulled after two batters in the seventh, including a game-tying double by Martin. Per Statcast™, Martin's double to left had an exit velocity of 106.4 mph. Toronto then took its first lead of the game on a pair of fortunate infield singles off Twins reliever Ryan Pressly. In fact, Donaldson's go-ahead single -- a comebacker off Pressly -- had a 34 percent hit probability, per Statcast™.
"Colon was shutting us down, but we got something going late," Gibbons said. "Bartolo has always been tough on us. We couldn't really square it up, but that's vintage [Colon]. He makes you beat him by putting the ball in play."
Dozier's dinger: Dozier launched a full-count fastball from Happ over the left-field wall in the bottom of the fifth to give the Twins a 3-1 advantage. According to Statcast™, Dozier's 31st long ball of the season went a projected 401 feet and had an exit velocity of 106.9 mph. It was his hardest-hit home run of the season and fourth-hardest since Statcast™ was introduced in 2015. Minnesota has now homered in 14 consecutive games since Sept. 1, which is tied for the third-longest streak in club history.
"It's awesome to see the fans and my teammates do that for me. I'm very thankful for them, and I know my family is very thankful. It's awesome." -- Colon, on Big Sexy Night
SOUND SMART WITH YOUR FRIENDS
Following a bunt single to begin the fourth, Byron Buxton swiped second base to notch his 26th steal of the season. It was his 21st consecutive successful base theft, which is tied for the third-most in Twins history.
Buxton would then score on Gimenez's RBI single.
WHAT'S NEXT Blue Jays: Right-hander Marco Estrada (8-8, 4.96 ERA) is slated to start for the Blue Jays on Saturday for Game 3 of the four-game series, beginning at 7:10 p.m. ET. His last time out, Estrada struck out seven batters across five innings in a win over Baltimore. He is 2-2 with a 4.26 ERA in nine career games against Minnesota.
Twins: Left-hander Adalberto Mejia (4-5, 4.47 ERA) will make his first start since Aug. 8 after missing more than a month due to a left biceps strain. He pitched well in three rehab starts, including five scoreless innings Saturday in the Southern League playoffs with Double-A Chattanooga. Game time is 6:10 p.m. CT.