Buchholz (7-2) logged his fifth straight start without a loss, surrendering five hits while walking two and striking out nine. He threw 69 of his 103 pitches for strikes as Boston claimed the opener of a three-game series.
Boston scored both of its runs in the seventh inning on RBI from Kelly Shoppach and Mike Aviles.
Miami's Mark Buehrle (5-7) absorbed the hard-luck loss, yielding a pair of runs on five hits in a seven-inning start.
Logan Morrison homered for the Marlins, who lost for the seventh time in eight games.
Reindeer recovered after escaping from Santa during lighting ceremony
Wisconsin business offering 'therapeutic cuddling' forced to close