CC Sabathia was the tough-luck loser for New York, allowing just two unearned runs. Alex Rodriguez went 0 for 4 with two strikeouts in his first game since going on the disabled list May 4 with a strained right hamstring.
Happ (6-2) allowed one run on three hits in seven innings with five strikeouts and three walks. He has given up three earned runs or fewer in 19 of his last 20 starts.
Sabathia (3-3) retired the first seven batters before an error by shortstop Didi Gregorius on Travis' grounder with one out in the third.
Roberto Osuna pitched a perfect ninth for his 10th save.
Starlin Castro, 1 for 11 in his previous three games, hit a two-out solo homer in first for the Yankees' only scoring.
Sabathia allowed two hits and a walk in seven innings, striking out seven to tie Chuck Finley for 23th place on the all-time list with 2,610. In two starts since coming off the disabled list, he has given up just one earned run in 13 innings.
The Yankees had runners on first and second with one out in the fifth. But No. 9 hitter Austin Romine, starting in place of Mark Teixeira at first base, grounded into an inning-ending double play. Jacoby Ellsbury led off the eighth with a pinch-hit infield single and moved to second with one out, but Gavin Floyd retired Aaron Hicks and Castro to protect the lead.
Bautista's appeal of his one-game suspension for his role in the May 15 brawl with the Rangers was heard earlier Thursday. Toronto general manager Ross Atkins said before the game he felt Bautista's actions didn't warrant the punishment, suggesting no ban would have been handed out had Texas second baseman Rougned Odor not punched Bautista in the jaw after a hard takeout slide.
Asked about the Blue Jays' growing bad-boy reputation, Atkins called the players and the club "misunderstood," adding he believes opponents and fans are reacting to Toronto's "ferocious lineup" and the intensity its hitters bring to each at-bat.
Blue Jays: SS Troy Tulowitzki sat out for the second straight game. He left Tuesday's loss with a sore right quadriceps.
Yankees: Teixeira missed his second straight game with a neck problem, with manager Joe Girardi expecting him to sit out at least two more but hoping he won't need a DL stint. Teixeira received cortisone shots in multiple places in his neck Thursday, a day after an MRI showed inflammation but no serious damage. ... The Yankees placed LHP Chasen Shreve on the 15-day DL with a sprained shoulder joint. They also optioned INF Rob Refsnyder to Triple-A Scranton/Wilkes-Barre and promoted LHP Richard Bleier.