NEW YORK — 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.
Rodriguez, who batted fifth, is 0 for 14 in his career against Happ.
"I felt really good before I got hurt," he said. "I'm confident I'm going to swing the bat well."
With Rodriguez back at DH, Carlos Beltran moved to right field and struck out in all four at-bats. Girardi said not to read anything into Beltran's struggle at the plate while playing in the field, suggesting it was just a regular offensive slump. Beltran was also 0 for 4 on Wednesday.
Yankees: Teixeira missed his second straight game with a neck problem, with 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 36-year-old switch-hitter said he's dealt with neck and upper back tightness throughout his career, though massages usually kept it in check. "This just got too much," he said. ... 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.
Blue Jays: SS Troy Tulowitzki sat out for the second straight game. He left Tuesday's loss with a sore right quadriceps.
Yankees: New York opens a 10-game trip at Tampa Bay on Friday when RHP Masahiro Tanaka (2-0) faces Rays RHP Chris Archer (3-5). Blue Jays: Toronto begins a six-game home stand Friday with RHP Aaron Sanchez (4-1) on the mound against Boston's Joe Kelly (2-0).