TORONTO -- Oakland's Bob Melvin called the 700th win of his managerial career "excruciating" and an "emotional roller coaster."
"We find a way to win the game, but it wasn't pretty," Melvin said.
The Athletics won for the third time in seven games to remain one game behind division-leading Texas in the AL West.
"Every win is a huge win, especially from here on out," catcher Stephen Vogt said. "We're battling."
Oakland outfielder Josh Reddick, who homered five times in the first two games of the series, was moved up to fifth in the order but didn't connect again. He went 1-for-3 with two walks.
Facing left-hander Darren Oliver (3-3) with runners at first and second and two outs in the eighth, Callaspo hit a drive to deep left. Emilio Bonifacio almost made a leaping catch at the wall, but the ball ticked off the side of his glove. A second run scored without a play at the plate when shortstop Jose Reyes dropped Bonifacio's relay throw.
"I thought (Bonifacio) was going to catch it," Callaspo said. "I hit the ball pretty good but not enough to go out. I'm happy he didn't catch that."
Ryan Cook (4-2) pitched 1 1/3 innings for the win, Sean Doolittle worked the eighth and Grant Balfour pitched around Brett Lawrie's RBI double in a 37-pitch, 26-minute bottom of the ninth for his 30th save in 31 chances. Balfour got Reyes to ground out with the bases loaded for the final out.
"I was horrible today, no doubt about it," Balfour said. "I got the job done, that's the main thing."
Vogt said Balfour was struggling with his slider.
"He couldn't get a good feel for his slider, he was kind of yanking the ball a little bit," Vogt said.
Moss hit his 18th home run off Blue Jays right-hander R.A. Dickey in the sixth inning.
"It wasn't a bad pitch, it actually was down in the zone," Dickey said. "He just went down and got it and hit it out."
It was the 26th home run allowed by Dickey this season, second only to Oakland starter A.J. Griffin's 28, and the 19th Dickey has surrendered in 13 home starts.
"He's a fly ball guy and the ball flies here," Blue Jays manager John Gibbons said of Dickey.
Dickey allowed three runs and six hits in seven innings, walked two and struck out six. He's 0-2 with a 6.23 ERA in his past four outings at Rogers Centre.
"That's big for us, that's big to win a game with R.A. Dickey starting and going into tomorrow with a chance to take the series," Vogt said.
The Blue Jays opened the scoring in the second thanks to a pair of Oakland errors. Leadoff batter Adam Lind reached on a fielding error by first baseman Moss and moved to second when Colby Rasmus walked. Rasmus was forced out on Lawrie's grounder to second, but an errant throw to first by shortstop Sogard allowed Lind to score.
After going 0-for-6 with runners in scoring position through the first five innings, Oakland broke through against Dickey with a three-run sixth. Yoenis Cespedes led off with a double, moved to third on a wild pitch and scored on Josh Donaldson's single. Moss homered two pitches later.
Toronto immediately tied it in the bottom half on an RBI single by Reyes and a sacrifice fly from Maicer Izturis. Cook replaced Griffin and intentionally walked Jose Bautista, but got Edwin Encarnacion to ground out.
Griffin had given up 10 home runs in his previous four starts but, pitching on an extra day's rest, avoided another longball barrage against the Blue Jays. The right-hander allowed three runs, two earned, and five hits in 5 2/3 innings. He walked a season-high six, one intentional, and struck out two.
Athletics OF Coco Crisp left in the eighth with a sore left wrist and is not expected to play Monday. ... Toronto juggled its rotation, moving LHP J.A. Happ up from Tuesday to Monday and pushing RHP Josh Johnson back from Monday to Wednesday with a sore forearm. RHP Todd Redmond will be recalled from Triple-A Buffalo to start against Boston Tuesday. ... Oakland C Derek Norris (back) was held out of the starting lineup. ... The Blue Jays have lost eight of 12 at home. ... Rasmus celebrated his 27th birthday. ... The Blue Jays wore red jerseys and maple leaf logo caps as the team marked Canada Baseball Day. ... Attendance was 45,312, Toronto's sixth sellout of the season.