Happ pitched six shutout innings for his first victory in three starts, Dioner Navarro and Jose Reyes homered and Toronto beat Boston 7-3 on Tuesday night.
"The curveball was as good or better than it's been so far this year," Happ said. "That was a big pitch tonight."
Reyes and Navarro both connected in the sixth inning as the Blue Jays rebounded from Monday's 14-1 defeat to snap Boston's winning streak at five games.
"After last night, that demolition, we knew we had to come through today," Navarro said. "We were expecting Happ to give us a shot and he did a great job."
Boston set season-highs in runs, hits (18) and homers (4) on Monday, but couldn't duplicate that output against Happ.
"There's no bank that we can take runs and put them in and take a loan out the next day, unfortunately," Red Sox manager John Farrell said. "It would have been nice to be able to do that today."
Reyes and Melky Cabrera both had three hits and two RBIs. Cabrera has 14 multi-hit games in his past 30.
David Ortiz hit a solo homer in the eighth, his third homer in two games and the 36th of his career at Rogers Centre, matching Alex Rodriguez for the most by a visiting player.
"He's very comfortable hitting in this ballpark," Farrell said.
Happ (8-5) allowed seven hits in six innings, walked one and struck out four to win for the first time since beating the Chicago White Sox on June 26.
"It might have been his best outing of the year," Blue Jays manager John Gibbons said.
Dustin McGowan allowed Ortiz's homer in 1 2-3 innings and Aaron Loup needed just one pitch to retire pinch-hitter Daniel Nava for the final out of the eighth.
Casey Janssen got two outs in the ninth but gave up a two-run homer to Stephen Drew. Brett Cecil got the final out for his fourth save in five chances.
The Red Sox have hit at least one home run in seven straight games.
Toronto opened the scoring in the third on a two-out single by Cabrera that struck Red Sox right-hander Jake Peavy in the leg and rolled into foul territory as Anthony Gose scored.
Reyes led off the sixth with his eighth home run and Cabrera followed with a double. One out later, Navarro made it 4-0 with a drive into the bullpen in right.
Peavy (1-9) left in the seventh after infield hits by Gose and Reyes. Cabrera greeted Burke Badenhop with another RBI single that struck the pitcher.
Peavy lost for the ninth time in 15 starts and has not won since beating Toronto on April 25. He allowed five runs and eight hits in 6 1-3 innings, walked three and struck out seven.
Peavy has received two runs of support or fewer in each of his past eight starts.
"Run support or no run support, it's not fun to lose," Peavy said.
Toronto made it 7-1 in the eighth, scoring twice against Felix Doubront. Ryan Goins hit an RBI single and scored on a double by Reyes.
Boston had chances, but went 1 for 9 with men in scoring position. The Red Sox loaded the bases with two outs in the fourth but Drew flied out.
The Red Sox got consecutive singles from Mike Napoli and Jonny Gomes to begin the sixth, but Shane Victorino grounded into a double play and Drew struck out.
Boston's Dustin Pedroia went 0 for 4 with a walk and is hitless in 17 at-bats.
NOTES: Toronto selected top prospect RHP Aaron Sanchez from Triple-A Buffalo. The Blue Jays recalled Goins and selected RHP Esmil Rogers from Triple-A. To make room, Toronto optioned C Erik Kratz and OF Darin Mastroianni to Triple-A and designated LHP Brad Mills for assignment. ... Canadian tennis star Milos Raonic served the first pitch with a racket, skipping it past Blue Jays pitcher Mark Buehrle to the backstop. ... Boston RHP Clay Buchholz faces Blue Jays RHP R.A. Dickey on Wednesday.