"You usually don't win a 1-0 game like that," Yankees manager Joe Girardi said.
A day after Derek Jeter got five hits, including No. 3,000, All-Stars Shields and Sabathia (13-4) staged a classic pitchers' duel, matching zeros until the bottom of the seventh inning.
Cano moved to third on the error. Shields (8-7), one of the toughest pitchers to run against in the game, then tried to pick him off. He fired wide into the tarp, and Cano trotted home.
"I had him picked off," Shields said. "He was walking down towards home plate. All I had to do was lob the ball over there and I ended up airmailing the play."
Sabathia finished a four-hitter for his 12th career shutout. The big left-hander struck out nine and walked one. He was selected for the AL All-Star team shortly after the game, but won't be going. He'll be replaced by Texas Rangers starter Alexi Ogando.
Sabathia was passed over when the rosters were announced a week ago, but replaced Shields when the right-hander appeared Sunday. He said he wasn't upset about being originally left off the AL team.
"I was going to the Bahamas the whole time because I was pitching today," Sabathia said.
The Yankees almost grabbed the lead in the third. Eduardo Nunez and Jeter started the inning with consecutive singles and both runners moved up on Curtis Granderson's sacrifice. But Nunez tried to tag up on Mark Teixeira's fly ball to center, and Upton cut him down at the plate.
Upton himself was picked off in the fourth, when he got caught by Sabathia in a rundown and was tagged out by first baseman Teixeira.
That was before his throw opened the door for the Yankees.
"It's unfortunate that that play ended up pretty much deciding the game," Upton said. "James pitched well all game. I wouldn't change anything I did but make a better throw."
Shields, who leads the major leagues with 10 pickoffs this season, got another complete game, but his third straight loss since winning three complete games in a row. He gave up four hits, struck out five and walked four.
Afterward, fans lingered and cheered Sabathia while he got a shaving-cream pie smooshed in his face on the field. New York won two of three against AL East rival Tampa Bay in its final series before the All-Star break, and has won eight of nine series since being swept by Boston in early June.
Coming up next: eight straight division games -- four apiece at Toronto and the Rays.
"It's going to be tough," Girardi said. "We're going to match up a bunch of times with (division rivals). We have 13 more with (the Rays), and nine more with the Red Sox."
The fan who caught Jeter's home run for his 3,000th hit, Christian Lopez, was posing for pictures with fans at the back of the lower-level stands on the third-base side. ... Jeter got a warm hand his first time up. ... The Rays optioned OF Brandon Guyer to Triple-A Durham after the game. They didn't immediately add anyone to their 25-man roster. ... Shields hasn't allowed a stolen base all season. No one has run on him since Angels speedster Peter Bourjos on April 30. ... A female fan was hit in the head by a foul ball off Yankees DH Jorge Posada's bat during the second inning. Stadium medical staff attended to the woman, whose head was bleeding, and placed her in a wheelchair and took her to first aid. The extent of her injuries was unknown. ... The game was tied for the Yankees' shortest this season. A 3-1 win over the White Sox on April 27 was also 2:11.