Buchholz (5-2), making his 11th start of the campaign, allowed two runs on six hits and struck out seven over eight innings. He had suffered a loss with two no-decisions in his previous three outings.
Ortiz hit a solo shot in the second, his 13th home run of the season, and had an RBI single as part of Boston's four-run seventh. Adrian Gonzalez also had run-scoring singles in the third and seventh.
Boston won for the ninth time in 13 games.
The loss went to Henderson Alvarez (3-5), who surrendered four runs on eight hits in 6 1/3 innings. The Blue Jays had won their previous three games in a sweep of Baltimore.