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.