CC Sabathia didn't allow any earned runs Thursday against Toronto. He didn't earn any wins, either.
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.
Sabathia allowed two hits and a walk in seven innings, striking out seven to tie Chuck Finley for 23rd 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.
"He did everything he needed to do to win the game," manager Joe Girardi said. "We just didn't score."
Starlin Castro, 1 for 11 in his previous three games, hit a two-out solo homer in the first for the Yankees' only scoring.
J.A. Happ (6-2) outdueled Sabathia, allowing one run on three hits in seven innings with five strikeouts and three walks.
"Their guy was a little bit better than me today," Sabathia said. "Had a good game, so you got to tip your hat."
Sabathia (3-3) retired the first seven batters before the error by Gregorius on Devon Travis' grounder with one out in the third. Sabathia got No. 9 hitter Darwin Barney, but a single by Jose Bautista and a walk to Josh Donaldson loaded the bases. Edwin Encarnacion singled to left for the 2-1 lead.
"We've been missing that for a while," manager John Gibbons said of the clutch hitting with runners in scoring position.
Travis, playing in just his second game of 2016 after offseason shoulder surgery, singled with two outs in the ninth off a 102 mph fastball from Aroldis Chapman to drive in Justin Smoak for the insurance run.
Roberto Osuna pitched a perfect ninth for his 10th save in 11 chances.
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.