Los Angeles took the rubber game of the three-game series after starter C.J. Wilson was chased in the fourth inning.
"This team is finding ways to win, and we're not out of it until the game's over," Calhoun said. "The bullpen came in and did a great job keeping us in the ballgame after the starting pitching didn't go as deep as they've usually been going. We came out and swung the bats and got enough runs to win."
The Blue Jays took a 7-6 lead in the sixth on Dioner Navarro's two-out RBI single against Fernando Salas, making his second appearance since coming off the disabled list after missing 19 games because of inflammation in his shoulder.
Pujols responded with a drive that hit the top of the center-field fence beyond the outstretched glove of Colby Rasmus and bounced over for his 20th homer of the season and 512th of his career, tying Ernie Banks and Eddie Mathews for 21st place all-time. It scored Mike Trout, who reached on a fielder's choice grounder after Calhoun drew a leadoff walk from Aaron Loup (2-2).
The homer was the first allowed by Loup this season after 43 1/3 innings.
"The curious thing was that they had the righty warmed up, and Albert hit that home run off a lefty. So we were like, `Oh, awesome. They're leaving him in to face Albert,' and he came up with a huge homer," Wilson said. "So it was great for us. We have a tenacious team, and the nature of our clubhouse is that we always believe that it's going to happen."
Jason Grilli (1-1) pitched a scoreless inning for his first AL victory since 2009 with Texas, striking out cleanup hitter Jose Bautista with two on to end the seventh. The 12-year veteran was acquired June 27 in a trade that sent Ernesto Frieri to Pittsburgh.
Joe Smith worked the ninth for his 12th save.
"We (threw) away a good opportunity today," Toronto manager John Gibbons said. "We had the lead, coughed it up, then took a slim lead. So it was disappointing. But hey, we left so many guys on base (12), and there comes a time you've got to blow open a game."
Marcus Stroman was charged with five earned runs and eight hits through 4 2/3 innings in his eighth big league start. The 23-year-old right-hander's teammates staked him to a 6-3 lead with a five-run fourth, but David Freese scored on a wild pitch in the bottom half and Calhoun drove his 10th homer into the lower seats in the right-field corner.
"Early on against me, I felt like he was putting the ball anywhere he wanted to. But with a 2-0 count, I got a fastball that got a lot of the plate and I put a good swing on it," Calhoun said.
The Blue Jays parlayed three hits, two errors and a bases-loaded wild pitch into their five-run rally against Wilson. He was charged with six runs -- three earned -- and eight hits in 3 2/3 innings. He is 3-3 with a 5.70 ERA in 10 starts since May 17, when he threw 127 pitches in a five-hit shutout against Tampa Bay.
"I think my delivery was a lot better today and the ball was going where I wanted it a lot better," said Wilson, who gave up three homers in his previous start against Houston.
The Blue Jays got one run back in the third on a bases-loaded walk to Reimold.
Trout, thrown out by Melky Cabrera in left field Tuesday night as he tried to stretch a double, tested Cabrera's arm again in the third inning Wednesday and was cut down at home plate after Pujols' single.
Pujols scored on a single by Josh Hamilton that ended his 0-for-16 drought and gave the Angels a 3-1 lead.
LHP Joe Thatcher relieved Cam Bedrosian in the Toronto fifth after a leadoff double by Navarro and walked Darin Mastroianni, ending a stretch of 25 appearances in which Thatcher pitched 14 innings and faced 56 batters without walking anyone. ... Calhoun's homer was the second allowed by Toronto pitchers in a span of 74 innings since the start of the month, after they gave up 27 during their final 22 games in June. ... Wilson threw 25 pitches in the first inning and gave up three hits without allowing a run.