Buchholz (5-3) allowed both runs on five hits in eight-plus innings five days after giving up just one run on three hits in 6 1/3 innings in a 7-2 win at Detroit. In between, four other Boston starters allowed at least four runs in their outings.
Buchholz struck out seven, walked one and faced only four batters over the minimum. He was helped by double plays in the first and seventh and his pickoff of Nick Punto, who had walked with two outs in the third.
But the Twins scored first, taking a 1-0 lead in the fourth on a leadoff double by Denard Span and an RBI double by Joe Mauer. Buchholz then retired the next nine batters before allowing a single to Justin Morneau in the seventh. Michael Cuddyer ended the inning by grounding into a double play.
Buchholz struck out Jim Thome to start the eighth, but Jason Kubel reached on a two-base error when Jeremy Hermida overran his fly ball in the left-field corner. Then Buchholz retired the next two batters. He left in the ninth after allowing Span's leadoff infield single. Daniel Bard picked up his first save of the year and second of his career, although Span scored on Mauer's groundout after moving up on defensive indifference and another groundout.
It was the sixth outing in eight starts in which Buchholz allowed three or fewer earned runs.
The Red Sox went ahead in the fourth on Ortiz's two-run homer after a single by Victor Martinez. The umpires first ruled that the high drive to left center didn't clear the red home run line. But they reviewed it and awarded a homer to Ortiz, his eighth of the year and fourth in six games.
Boston made it 3-1 in the sixth after Scott Baker (4-4) retired the first two batters. Adrian Beltre and Hermida then singled and Bill Hall singled in Beltre.
The game was played in a light rain on the second anniversary of Jon Lester's no-hitter for Boston in a 7-0 win over Kansas City.
But it was Lester who began the current rotation's slump last Saturday when he allowed four runs in seven innings in a loss to the Tigers. They lost again the next day to Detroit when John Lackey gave up five runs in seven innings and the following day at the New York Yankees after Daisuke Matsuzaka was battered for seven runs in 4 2/3 innings.
The Red Sox snapped their three-game losing streak against the Yankees on Tuesday night with a 7-6 win, but starter Josh Beckett allowed five runs in 4 2/3 innings.
Wednesday's win improved Boston's record to 5-11 against Tampa Bay, New York and Minnesota, the top three teams in the American League.
The Red Sox placed Beckett on the 15-day disabled list with a strained lower back and called up right-handed reliever Joe Nelson from Triple-A Pawtucket. … Hall played shortstop in place of Marco Scutaro, who was given the night off after playing in all 40 of Boston's games. … Baker lost for only the fourth time in his last 14 road decisions. … J.D. Drew batted leadoff for the first time this year, in place of Scutaro, and had his streak of reaching base in 17 straight games ended.