TORONTO -- J.A. Happ threw the Boston Red Sox a curveball on Tuesday.

Then he threw another and another.

The curveball turned out to be the big pitch for the Toronto Blue Jays' left-hander.

Combined with a fastball that he was able to command and a decent changeup, he shut out Boston over six innings, and shortstop Jose Reyes and catcher Dioner Navarro hit sixth-inning homers that broke open a tight game to give the Blue Jays a 7-3 victory.

"(Happ) was really good tonight in a one-run ballgame," Blue Jays manager John Gibbons said. "It might have been his best outing of the year simply because he had a good curveball going that he used quite a bit."

The Blue Jays (52-49) snapped a five-game winning streak by the Red Sox (47-53) by taking the second game of the four-game series. They lost the opener 14-1 on Monday.

"I think the good thing is: Whatever you want to say about last night, it counts as one and tonight counts as one, so we're even," Happ said. "So it's not as bad as it might have seemed."

Happ (8-5) held the Red Sox to seven hits and one walk while striking out four.

"The curveball was probably as good (as) or better than it has been so far this year," Happ said. "That was a big pitch tonight. The fastball command was pretty good overall tonight. So I felt good about getting ahead of those guys because they can be patient and wear you out."

Right-hander Dustin McGowan pitched 1 2/3 innings, allowing the 23rd homer of the season by Red Sox designated hitter David Ortiz in the eighth.

After left-hander Aaron Loup completed the eighth, right-hander Casey Janssen allowed a two-run homer to Stephen Drew in the ninth. It was the Boston shortstop's fourth homer of the season.

After Drew's homer, Janssen gave up a single to catcher David Ross and a walk to center fielder Brock Holt. Left-hander Brett Cecil replaced Janssen with two outs and retired Ortiz for his fourth save of the season.

Jake Peavy (1-9), who was trying for his first win since he defeated the Blue Jays on April 25, allowed eight hits and five runs in 6 1/3 innings. The right-hander struck out seven.

"Run support or no run support, it's not fun to lose," Peavy said. "Walking off I was extremely, extremely frustrated in the way that last inning played out."

"He's pitched good and we haven't scored runs for him," Red Sox second baseman Dustin Pedroia said. "That's the bottom line. He's kept us in every game and competed. That's what he does."

Happ took a 1-0 lead into the sixth and gave up singles to the first two batters: first baseman Mike Napoli and left fielder Jonny Gomes. The next hitter, right fielder Shane Victorino, hit into a double play on a grounder to shortstop, and Napoli advanced to third. Drew struck out to end the threat.

The Blue Jays used a pair of homers to score three runs in the sixth and take a 4-0 lead. Reyes led off with his eighth homer of the season. Left fielder Melky Cabrera followed with a double and took third on right fielder Jose Bautista's flyout to right. Navarro hit his seventh homer of the season.

"Just trying to be too fine, overthrowing balls and not throwing them where they need to be," Peavy said. "I've got to be better. That's all there is to it. It's frustrating to lose."

The Blue Jays added a run in the seventh. Center fielder Anthony Gose bunted for a single with one out, and Reyes beat out an infield single. Right-hander Burke Badenhop replaced Peavy, and Gose and Reyes executed a double steal. Cabrera then singled sharply on a ball that deflected off Badenhop to third baseman Xander Bogaerts as Gose scored.

The Blue Jays added two runs in the eighth against left-hander Felix Doubront -- on an RBI single by second baseman Ryan Goins, just promoted from Triple-A Buffalo, and a double by Reyes.

The Blue Jays took a 1-0 lead in the third on a hard, two-out single by Cabrera that bounced off Peavy to the first-base line. Peavy threw wildly to first, and Gose scored. Cabrera was out trying to reach second. Gose began the play at second after a walk and a stolen base.

"You've got to try and turn the page as fast as you can and play winning baseball," Pedroia said.

NOTES: The Blue Jays called up RHP Aaron Sanchez, RHP Esmil Rogers and 2B Ryan Goins from Triple-A Buffalo. LHP Brad Mills was designated for assignment, and C Erik Kratz and OF Darin Mastroianni were optioned to Buffalo. ... Goins started at second base Tuesday, with Munenori Kawasaki, who had been playing second, shifting to third and Juan Francisco moving from third to first. ... The Red Sox won all five games in which rookie C Christian Vazquez started behind the plate. He is the first Red Sox catcher to do that and the first American League catcher to accomplish the feat since Brewers C Bill Schroeder won his first six starts in 1983. ... C David Ross started behind the plate for Boston on Tuesday. ... Boston RHP Clay Buchholz (5-5, 5.46 ERA) will start the third game of the four-game series against Toronto RHP R.A. Dickey (7-10, 3.95 ERA) on Wednesday.