Justin Smoak homered from both sides of the plate, Mark Buehrle won his fourth straight decision and Toronto ended Boston's winning streak at three.
Jose Bautista, Edwin Encarnacion and Josh Donaldson all connected and Jose Reyes had four hits as the Blue Jays scored more runs than they had in their previous four games combined, giving a Canada Day crowd of 45,392 plenty to cheer about.
Buehrle (9-4) allowed one run and four hits in seven innings. He hasn't lost since May 23 against Seattle.
Encarnacion hit a three-run homer off Rick Porcello in the first and Smoak added a two-run drive into the second deck in right.
Bautista snapped an 0 for 25 slump with a two-run shot in the second, the 16th home run allowed by Porcello this season.
Porcello (4-9) allowed seven runs and seven hits in two innings, his shortest start of the season. He's 0-7 with a 8.18 ERA in eight starts since beating Seattle on May 16.