Marcum (3-2) struck out nine and won for the first time in three starts, lowering his ERA to 2.70. He allowed just two hits, both singles by Orlando Cabrera, and walked three.
Jeremy Accardo relieved Marcum after back-to-back walks with two out in the seventh. Accardo loaded the bases by walking Brian Anderson, but got Juan Uribe on a fly out to right.
Jesse Carlson worked the eighth, Shawn Camp struck out one batter in the ninth and Scott Downs closed it out for his second save.
The Blue Jays have won two straight, both shutouts, after losing eight of their previous nine
- including six in a row. Toronto beat Boston 3-0 on Thursday.
Buehrle (1-3) gave up two runs - both unearned - on five hits in eight innings. He hasn't won since April 6 at Detroit, a span of four starts.
The Blue Jays scored the game's only runs with two outs in the first. Scott Rolen reached on third baseman Joe Crede's throwing error and went to third on a ground-rule double by Vernon Wells. Both runners scored when Stewart singled up the middle.
Toronto missed a chance to add to its lead in the fourth after back-to-back singles by Wells and Stewart put runners on base with nobody out. Lyle Overbay struck out swinging and Gregg Zaun was caught looking before Buehrle got Adam Lind to ground out.