The Blue Jays took two of three from the Red Sox, who saw their lead over Tampa Bay in the American East reduced to two games.
Toronto starter Mark Buehrle (9-7) allowed a lone run in seven innings of work, but the Blue Jays still trailed heading into the bottom of the seventh.
Their fortunes began to turn, however, when Boston third baseman Will Middlebrooks committed a fielding error that allowed leadoff batter Jose Bautista to reach first.
Bautista went to second on a single by Edwin Encarnacion and scored on another base hit from Brett Lawrie. DeRosa followed with a sacrifice fly that brought home Encarnacion.
Jake Peavy (9-5) was charged with the two runs in the seventh, only one of which was earned.