The A's blew a 4-1 lead in the top of the ninth but managed to pull out the victory to remain undefeated in 51 games this season when they led after eight innings.
Steve Tolleson started the winning rally with a leadoff single against Casey Janssen (4-1). He went to second on a passed ball by Jose Molina and scored easily on Pennington's grounder into right field.
Fill-in closer Michael Wuertz was unable to preserve a three-run lead, blowing his first save in seven chances in place of injured All-Star Andrew Bailey.
The Blue Jays entered the ninth with just two hits, including on an infield popup that was lost in the sun. But Adam Lind started the rally with a double. One out later, Wuertz threw eight straight balls to Lyle Overbay and Edwin Encarnacion to load the bases.
J.P. Arencibia hit an RBI single to make it 4-2 and knock out Wuertz. Jerry Blevins came on and surrendered a tying two-run single to Fred Lewis. Brad Ziegler (3-4) got out of the jam by getting Yunel Escobar to hit into a double play after his grounder down the first-base line was ruled just foul by umpire Tim Timmons instead of being an RBI hit.
Toronto's lone run against Gonzalez was the result of bright sun and a lucky break. With runners on first and second and two outs in the fifth, Lewis hit a high popup in front of the plate. Third baseman Kevin Kouzmanoff appeared to have trouble tracking the ball in the sun and catcher Kurt Suzuki was unable to come out and make the catch.
By the time Suzuki picked up the ball, he couldn't get back to the plate in time to tag out Overbay and Lewis got credit for an RBI single. Gonzalez escaped without further damage by getting Escobar on a groundout.
The only other hit off Gonzalez was Vernon Wells' second-inning double. The left-hander, quietly having a breakout season, struck out six and walked four.
The Blue Jays lost a fly ball in the sun in the bottom half of the fifth but it didn't hurt them. Crisp was caught too far off second base after the ball fell in shallow left-center and was tagged out in a rundown.
Toronto starter Marc Rzepczynski, who had walked only two batters in 18 1-3 innings in the majors this season, walked the first three batters in this game and struggled to find a rhythm. Suzuki and Kouzmanoff hit run-scoring groundouts to give the A's a 2-0 lead.
Rzepczynski was hurt by wildness again in the second. Pennington walked with two outs and scored on Crisp's double. Rzepczynski left after walking Conor Jackson with one out in the fifth for his fifth walk of the game.
Crisp added a solo homer in the seventh off Scott Downs.
NOTES: Oakland's starters have allowed one or fewer earned runs in eight of their past 11 games. ... Rzepczynski became the first Toronto starter to walk at least five and strike out nobody in a game since Miguel Batista on Aug. 13, 2004, against Baltimore. ... Oakland has won 12 of 14 day games and is a major league-best 29-12 during the day this season. ... Arencibia snapped an 0-for-15 slide with his bloop single in the ninth.