Kevin Pillar reached on a fielding error by Boston's Drew Sutton, allowing Adam Loewen to cross to break a scoreless tie. Kevin Ahrens was thrown out at home on the play to end the inning.
Esmil Rogers worked a 1-2-3 ninth for the save, while Sergio Santos, who struck out the side in the top of the eighth, got the win in relief for the Blue Jays.
Aceves, who is tabbed as a long reliever and the sixth starter when needed for the Red Sox, walked two and struck out five in five innings.
Happ, who could be a long reliever in Toronto or a starter in Triple-A Buffalo, allowed two walks and recorded three strikeouts. He could be insurance in the No. 5 starter role should Ricky Romero continue to struggle.
Happ was followed by Blue Jays closer Casey Janssen, who pitched in his first Grapefruit League game and logged a 1-2-3 seventh with two strikeouts. Janssen has been brought along slowly after minor shoulder surgery in the offseason.
Happ gave up a first-inning double on a popup that dropped in just behind third base. The lefty didn't allow another runner until two outs in the fourth, when he walked Ryan Lavarnway and hit Lyle Overbay with a pitch. But Happ ended the inning on Mauro Gomez's fielder's choice grounder.
Aceves survived Mark DeRosa's leadoff double, a balk and a walk in the third. DeRosa had two of the Blue Jays' four hits in the game.
Bruce Bentz hit a double to center against Happ with one out in the fifth and Xander Bogaerts followed with a walk. But Happ got a double-play grounder from Brock Holt.
Up next for the Red Sox: Right-hander Clay Buchholz gets the start for Saturday afternoon's 1:35 p.m. ET home game against the Pirates on MLB.TV. Junichi Tazawa, Daniel Bard and Anthony Carter are scheduled to work out of the bullpen. Most of the Red Sox regulars should be in the starting lineup, including Jacoby Ellsbury, Dustin Pedroia and Will Middlebrooks.