Jose Reyes made two throwing errors — including a key miscue in New York's five-run seventh inning — but made up for it by scoring the winning run in the bottom of the ninth.
New York made the final mistake as Yangervis Solarte threw wide to first base after Melky Cabrera laid a bunt down the third-base line. That allowed Reyes, who led off with a double, to trot home with the winning run to the delight of the 34,206 fans at Rogers Centre.
"It wasn't a real well-played game, but the name of the game is winning," said Blue Jays manager John Gibbons.
Dioner Navarro hit a three-run shot for Toronto (44-35), which moved 2 1/2 games up on second-place Baltimore in the American League East. The Orioles dropped a 4-2 decision to the Chicago White Sox.
The Yankees' fourth loss in a row moved them 3 1/2 games behind Toronto. Reliever Adam Warren (1-4) shouldered the loss for New York (39-37).
"It was sloppy on both sides," said Yankees first baseman Mark Teixeira. "That was an ugly game to watch. If you're a fan, you should get your money back."
The Blue Jays will go for a sweep of the three-game series Wednesday night.
Navarro put the Blue Jays on the board in the fourth inning with his blast off New York starter David Phelps. Toronto tacked on three more runs in the fifth inning when Colby Rasmus laced a shot that hit the top of the wall in right field.
Two runs came across on the play and Edwin Encarnacion rounded third when Rasmus broke for second base. The cutoff man threw to Derek Jeter at second, who had Rasmus caught in a rundown.
With Encarnacion leaning for home, Jeter decided to hang on to the ball and go for the tag on Rasmus. However, he couldn't catch up to the Toronto centre-fielder, who dived back to the bag at first base as Encarnacion scored.
Jeter rebounded with a solo homer in the sixth inning and the Yankees took advantage of two Toronto errors in the seventh to tie the game. Brian Roberts got things started by hitting a two-run homer off Toronto starter Mark Buehrle to cut the Blue Jays' lead to 6-3.
With Brett Gardner at second base and Jeter at first, Jacoby Ellsbury drove a single to left field off Dustin McGowan. Cabrera tried to get Gardner at the plate but the throw went to the backstop allowing the run to score on the error as both runners advanced.
McGowan got Teixeira to hit a chopper to second base but Reyes was short with his throw to Encarnacion at first and two more runs crossed the plate.
It gave Reyes even more incentive when he came up to bat in the ninth.
"I tried to make something happen after that mistake,"Reyes said. "They tied the game there in that situation. I have to make a better throw than that. It is what it is. Like I said, when I came up in the ninth inning I just tried to make something happen.
"I put a good swing on the ball and hit a double with nobody out."
Reyes also gave credit to Cabrera for making a great play that forced the errant throw.
"He laid down a perfect bunt," he said. "In that situation we need that."
It was the 13th multi-hit game of the season for Reyes, who ended an 0-for-19 skid with a single in the fifth inning.
"Jose's a driven individual," Gibbons said. "Plus he's overdue, his bat has cooled off. So it was just a matter of time. He dunked that one in earlier in the game, but he's been missing his pitches.
"He's been a little too aggressive. But perfect timing for it, you know."
Encarnacion was accidentally elbowed in the back of the head by Teixeira in the seventh inning. The Toronto slugger was face down on the dirt for several seconds as a hush came over the crowd.
Gibbons and a team trainer came out onto the field to check on him and Encarnacion eventually shook it off and stayed in the game. He had a fat lip afterwards but said there were no other issues.
"Right now I feel good, I feel great — 100 per cent," he said.
Aaron Loup relieved McGowan in the seventh and got Carlos Beltran to hit a comebacker for the third out.
The Blue Jays loaded the bases in the eighth inning but reliever Dellin Betances struck out Munenori Kawasaki to end the threat. Casey Janssen (2-0) came on in the ninth inning and gave up a single to Gardner, who eventually moved to third base with two out.
With the crowd on its feet, Janssen fanned Teixiera with a 72 mile-per-hour curveball.
"That's big to win that game," Gibbons said. "We don't win that one last year, I know that."
Notes: Lind fouled a ball off his sore right foot in the seventh inning but stayed in the game. He was wearing a protective cover over his cleats but was noticeably slow while running to first on a ground ball. ... Injured Blue Jays right-hander Brandon Morrow, who had been rehabilitating his hand injury in Arizona, returned to the team Tuesday. He tore a tendon sheath in his throwing hand on May 2. Morrow played catch for 10 minutes before the game but no timeline is set for his return. ... Toronto third baseman Juan Francisco turned 27 on Tuesday. ... The Blue Jays have held sole possession of first place in the A.L. East for 33 straight days. The team's previous longest stretch came in 1993, the last year Toronto won the World Series. ... Buehrle received a standing ovation as he walked to the dugout after being pulled in the seventh inning. He worked 6 2/3 innings and allowed eight hits and four earned runs while striking out three. It was his 445th consecutive start without a stint on the disabled list — the longest active streak in the major leagues. ... Buehrle also leads all major-league pitchers in pace, taking an average of 17.0 seconds between pitches. ... Phelps worked five innings, allowing eight hits, six earned runs and a walk while striking out seven. ... Drew Hutchison (5-5, 3.86) is scheduled to start Wednesday's series finale against New York's Hiroki Kuroda (4-5, 4.23).