Wilson (16-6) allowed four runs, three earned, in seven innings to match his career-high in victories, first set with Texas in 2011.
"Of all the things we've talked about this year that haven't worked out, C.J. is on the other side of that ledger," Angels manager Mike Scioscia said. "He's having just a terrific season, pitching deep into games. He's going to be 200-plus innings again. Every stat you look at is terrific for him."
The left-hander, who has not lost since July 5 against Boston, walked four and struck out six. He's 12-1 with a 3.02 ERA in 17 starts since June 14.
Wilson, however, insisted that he can be even better, and said he's still working to refine things between starts.
"I'm still not happy with how I'm pitching, he said. "Today I won, but it wasn't a great stat line for me with the walks and stuff."
Blue Jays manager John Gibbons said Wilson "can carve you up" when he's on.
"He's got that nice cutter that he runs inside to right-handers and it really kind of neutralizes you," Gibbons said.
Mike Trout started the winning rally by drawing a one-out walk off Steve Delabar (5-3) in the eighth and going to third on Hamilton's double. Trumbo was intentionally walked to load the bases for Calhoun, who hit a sacrifice fly to left.
"I'm playing free and starting to get into a good rhythm," Calhoun said. "It makes it a lot easier getting out there every single day."
Calhoun went 1 for 2 with two sacrifice flies, helping Los Angeles win for the fifth time in seven games.
"He's one of those guys where the sum is greater than the parts," Wilson said of Calhoun.
Calhoun has at least one RBI in 14 of his past 15 starts, the first Angels player ever to do so.
"He's really shortened his swing and you see he has the strength to still drive the ball," Scioscia said. "He's just having great at-bats."
Moises Sierra went 3 for 4 with two doubles and a triple, but it wasn't enough for the Blue Jays.
Toronto took a 3-0 lead with a two-out rally in the first. Sierra doubled home Rajai Davis and Adam Lind, who had both walked, then scored on a throwing error by shortstop Erick Aybar, who overthrew first base on Mark DeRosa's infield single.
The Angels answered with two runs in the second off Blue Jays starter R.A. Dickey. Hamilton drew a leadoff walk and Trumbo followed with second-deck blast to center, his sixth consecutive hit. Trumbo went 5 for 5 in Tuesday's 12-6 win.
Trumbo's homer was the 31st off Dickey this season. Only Oakland's A.J. Griffin (33) has allowed more.
Los Angeles tied it on Calhoun's first sacrifice fly in the fourth, with Trout scoring his 100th run of the season. Trout is the third Angels player to record consecutive 100-run seasons and just the seventh player in big league history to do it at ages 20 and 21. The last was Alex Rodriguez, who scored 100 runs in 1996 and 1997.
Toronto reclaimed the lead in the bottom half when Sierra led off with a triple and scored on an error by third baseman Andrew Romine, who couldn't handle Aybar's relay throw.
The Angels tied it again in the fifth. Grant Green hit a leadoff double and scored two batters later on Aybar's sacrifice fly.
Dickey had pitched at least six innings in his previous 15 starts but failed to extend the streak. The knuckleballer allowed four runs and seven hits in 5 1/3 innings, walked two and struck out two.
"I thought he looked really sharp that first inning," Gibbons said. "Then it was kind of hit or miss."
The Angels have won 11 of their past 13 road games. ... Blue Jays slugger Edwin Encarnacion (left wrist) missed his third straight game. Gibbons said Encarnacion has not been able to hit off a tee or in the cage since Sunday because of lingering pain. ... On the anniversary of the Sept. 11 terrorist attacks, members of the Toronto Police Services, Toronto Fire Department and Toronto Emergency Medical Services participated in the national anthems.