Oakland Athletics' Nick Punto, top, falls on Toronto Blue Jays' Jose Reyes after Reyes stole second base in the first inning of a baseball game on Friday, July 4, 2014, in Oakland, Calif. (AP Photo/Ben Margot)The Associated Press

+Read Caption

Oakland Athletics' Nick Punto, top, falls on Toronto Blue Jays' Jose Reyes after Reyes stole second base in the first inning of a baseball game on Friday, July 4, 2014, in Oakland, Calif. (AP Photo/Ben Margot)

Toronto Blue Jays' Jose Reyes, bottom, steals second base as Oakland Athletics' Nick Punto waits for the ball in the first inning of a baseball game on Friday, July 4, 2014, in Oakland, Calif. (AP Photo/Ben Margot)The Associated Press

+Read Caption

Toronto Blue Jays' Jose Reyes, bottom, steals second base as Oakland Athletics' Nick Punto waits for the ball in the first inning of a baseball game on Friday, July 4, 2014, in Oakland, Calif. (AP Photo/Ben Margot)

Oakland Athletics' Nick Punto, second from left, fields a ball hit by Toronto Blue Jays' Steve Tolleson in the fifth inning of a baseball game on Friday, July 4, 2014, in Oakland, Calif. Athletics' Jed Lowrie, left, Coco Crisp (4) and Yoenis Cespedes, third from left, assist on the play. (AP Photo/Ben Margot)The Associated Press

+Read Caption

Oakland Athletics' Nick Punto, second from left, fields a ball hit by Toronto Blue Jays' Steve Tolleson in the fifth inning of a baseball game on Friday, July 4, 2014, in Oakland, Calif. Athletics' Jed Lowrie, left, Coco Crisp (4) and Yoenis Cespedes, third from left, assist on the play. (AP Photo/Ben Margot)

Oakland Athletics' Brandon Moss falls to the ground with an apparent injury in the eighth inning of a baseball game against the Toronto Blue Jays, Friday, July 4, 2014, in Oakland, Calif. Moss left the game and did not return. (AP Photo/Ben Margot)The Associated Press

+Read Caption

Oakland Athletics' Brandon Moss falls to the ground with an apparent injury in the eighth inning of a baseball game against the Toronto Blue Jays, Friday, July 4, 2014, in Oakland, Calif. Moss left the game and did not return. (AP Photo/Ben Margot)

OAKLAND, Calif. (AP) — The Toronto Blue Jays matched Tommy Milone and Oakland's superb bullpen every step of the way until the final play in left field.

Melky Cabrera couldn't corral Nick Punto's slicing double with one out in the 12th inning, allowing a run to score and sending the Athletics to a 1-0 victory over the Blue Jays on Friday.

"It's frustrating. We had our chances. Not a lot of them," Blue Jays manager John Gibbons said. "We need to start picking up some hits to win some ballgames."

Derek Norris led off the rally with a walk by Chad Jenkins (0-1), who tossed two innings of relief. After Jed Lowrie lined out, Punto poked a double down the line in left.

Cabrera moved to his right to cut off the ball, which squirted by his glove for an error. Norris, who runs well for a catcher, hustled from first for an odd ending to a game highlighted by stellar pitching performances by Milone, Toronto's Marcus Stroman and both bullpens.

Dan Otero (7-1), the fifth Oakland reliever to toss a scoreless inning, earned the win. Cabrera never surfaced in the clubhouse during the time reporters were allowed in after the game.

"That's not the game," Gibbons said of Cabrera's misplay. "It was great pitching on both sides."

Stroman gave up seven hits in seven innings. He struck out seven and walked three.

Milone allowed four hits in six innings, striking out six and walking one intentionally. The left-hander is 6-0 in his last 11 starts and hasn't lost since May 3 at Boston.

"That's the definition of a pitching duel," Milone said. "It's exciting. It's fun to watch. But it was about that time."

The pitchers quickly erased the few chances both offenses had.

Jose Reyes singled on the game's first pitch, but Milone didn't allow another hit until Steve Tolleson doubled on a pop fly leading off the fifth that landed between three players battling the bright sky, which caused problems all day. Tolleson advanced to third on the second of two groundouts before Milone struck out Reyes.

Lowrie's fielding error at shortstop extended the sixth for Toronto. But Milone rebounded the way he had all afternoon, striking out Brad Glenn to strand two.

"It the same thing he's been doing all season. He changes speed and locates so well," said Blue Jays center fielder Darin Mastroianni, who singled with one out in the 12th for his only hit.

Stroman kept the A's off-balanced and out of sync in similar fashion. He got some help from his defense, too, including Cabrera.

With two on and two outs in the third, Cabrera made a diving catch on Yoenis Cespedes' liner to left. Cabrera grabbed his midsection and jogged gingerly backed to the dugout afterward.

Josh Donaldson started a double play by fielding Edwin Encarnacion's grounder at third and threw from his backside to Punto, whose relay from second to first ended Toronto's eighth.

Toronto caught its own defensive break when Brandon Moss sprained his left ankle coming out of the box, and the Blue Jays easily turned a double play to end the bottom of the inning. Moss said the ankle is sore but hopes to play Saturday, though A's manager Bob Melvin said Moss will likely get a day off.

"The pitching today was fantastic across the board," Melvin said. "They came in, did their job for the inning and passed the baton to the next guy."

NOTES: Blue Jays hitting coach Kevin Seitzer was ejected by home plate umpire Vic Carapazza in the sixth inning for apparently arguing balls and strikes from the dugout. ... Melvin said an MRI revealed that 1B Kyle Blanks has a slight tear in his left calf and is not expected back anytime soon. ... Scott Kazmir (9-3, 2.61 ERA) starts for Oakland opposite Toronto's Mark Buehrle (10-5, 2.50 ERA) on Saturday.