BOSTON -- Kendrys Morales hit a three-run shot in the first inning.
Jose Bautista connected for a solo home run in the third.
Raffy Lopez chased reigning AL Cy Young Award winner Rick Porcello with a two-run homer in the sixth.
"Six of the seven runs he allowed were on those three swings," Red Sox manager John Farrell said after the Toronto Blue Jays beat Boston 10-4 on Monday night, handing Porcello his major league-leading 16th loss.
Steve Pearce had three of Toronto's 14 hits, and J.A. Happ allowed just one earned run in 5 2/3 innings. Toronto carried a 7-4 lead into the ninth and scored three more times, highlighted by Justin Smoak's 37th homer and a run-scoring double from Morales.
"It seems like we've never had enough runs since I've been here. So that was nice," said Lopez, who was playing in Fenway Park for the first time. "It's always nice in any environment to get a home run, but this is pretty awesome."
Boston lost for the fourth time in five games. Its lead in the AL East was trimmed to 2 1/2 games over the New York Yankees, who beat Baltimore in the afternoon.
"Our guys are well aware of where we stand," said Farrell, who revealed that the team had a meeting four days ago. He would not elaborate on what was said.
Eduardo Nunez had two hits and three RBIs for Boston.
Less than a year after he was named the AL's top pitcher, Porcello (9-16) picked up a career-worst 16th loss. Since starting the season with a 4-14 record, he had won five of six decisions - including his previous start on Wednesday, when he held Toronto to one run over 6 2/3 innings.
"Obviously, I'm disappointed in my performance tonight," he said, noting his teammates had a long night after losing to the Yankees in New York on Sunday night. "I was probably the only one that was fresh."
Porcello was charged with seven runs and 10 hits in 5 1/3 innings.
Happ (7-10) gave up three runs and six hits. He was charged with an error that led to two runs in the second inning when he threw the ball into center field on a would-be fielder's choice.
The Blue Jays led 3-0 after one inning and 4-2 after three before they pulled away with a three-run sixth against Porcello.
Ryan Goins singled with one out, Darwin Barney doubled off the Green Monster to score one run and bring pitching coach Carl Willis out to the mound. But on Porcello's first pitch to Lopez - his 100th of the game - the No. 9 hitter homered over the Toronto bullpen to make it 7-2.
"We thought he settled down after that Bautista home run," Farrell said.
The Red Sox had been 10-3 against the Blue Jays this season, including a three-game sweep in Toronto last week. ... The Jays have won just five times in their last 17 games. They had lost seven of nine in Boston. ... Fernando Abad struck out Lopez on a 59 mph changeup to end the eighth inning.
Blue Jays: RHP Marcus Stroman is penciled in to pitch Friday night against Detroit, acting manager DeMarlo Hale said. Stroman left his last outing on Saturday when was hit by Mark Trumbo's 107 mph line drive on the right elbow. X-rays were negative.
Red Sox: 2B Dustin Pedroia got a "planned day off," Farrell said, and will be back in Tuesday and Wednesday. ... LHP David Price is ready to begin pitching in simulated games. He has been out since July 22 with left elbow inflammation.