It was the 34th career multihomer game for Guerrero, who came in batting .260 with just four homers, his lowest career totals after 45 games.
Guerrero quickly set about erasing that slow start, clubbing a solo shot to center in the first and adding a three-run drive into the second deck in left in the third.
"He's got hands as quick as anybody who's ever been in the batter's box," Angels manager Mike Scioscia said. "He went out and got a breaking ball that wasn't too bad of a pitch and hit it out to left center, then got a tough pitch inside and got his hands through and killed it. That's talent."
The Angels only got two other hits, singles by Garret Anderson and Chone Figgins, but it was enough to beat the Blue Jays.
"We didn't have much offensively," Scioscia said. "It's safe to say, if you're going to say somebody carried us tonight, it would be Vlad."
Guerrero, who finished 2-for-4 with four RBIs, struck out swinging in the fifth and flied to center in the eighth.
"I saw the ball very well tonight," Guerrero said through a translator. "My swing felt great, comfortable. We needed the home runs tonight with so few hits. That's my job, to help the team, especially on a night like tonight."
Garland (5-3) has lost just once in his past seven starts. He gave up three runs and eight hits in six innings, walked two and struck out one.
The right-hander is 6-0 with a 4.47 ERA in ten career games at Rogers Centre and 10-2 overall in 14 career starts against the Blue Jays.
Garland is at a loss to explain his success in Toronto, or at other domed stadiums with artificial turf. He's 16-4 at such ballparks in his career.
"Usually, for a sinkerballer who's supposed to get a lot of ground balls, it doesn't work out that way," Garland said. "I have no idea. I hope it continues though."
Jose Arredondo worked the seventh, Scot Shields pitched the eighth and Francisco Rodriguez closed it out in the ninth for his major league-leading 19th save.
Blue Jays right-hander Shaun Marcum (4-3) worked on two days rest after going just one inning because of a rain delay in Sunday's game at Philadelphia. Marcum lost for the first time since April 26 at Kansas City and has not won in three starts, his longest streak of the season.
Marcum allowed four runs and four hits in 6 2-3 innings. He walked three and struck out seven, and was left frustrated by Guerrero's two drives.
"I threw two good pitches, pitcher's pitches, and he hit them out of the park," Marcum said.
Toronto scored one in the first on an RBI single by Matt Stairs, but the Blue Jays didn't get another hit until the fifth. Alex Rios made it 4-2 with Toronto's third hit of that inning, a two-out single to center.
The Blue Jays cut it to 4-3 in the sixth when Lyle Overbay doubled and scored when Gregg Zaun singled off Garland's leg, but Brad Wilkerson lined out to first to leave two runners stranded.
Arredondo gave up singles to Aaron Hill and Rios to begin the seventh and a passed ball put runners at the corners, but Scott Rolen struck out and Stairs grounded into a 3-6-3 double play.
Toronto put runners at first and second with one out in the eighth, but Marco Scutaro grounded into the Blue Jays' sixth double play of the series. The Blue Jays hit into four double plays in Tuesday's 3-1 defeat.
"We did just enough to win," Scioscia said. "Our bullpen was on the edge again."
Blue Jays catcher Rod Barajas made a great sliding catch to retire Mike Napoli in the ninth, skidding into the Angels dugout and trapping the ball against his chest protector.
Notes: LHP Joe Saunders (flu-like symptoms) will miss his scheduled start Thursday, with right-hander Ervin Santana taking his spot. Saunders is expected to pitch either Friday or Saturday when the Angels visit the Chicago White Sox. ... Los Angeles activated INF Figgins off the 15-day disabled list and put INF Erick Aybar (dislocated finger) on the 15-day DL. Scioscia said Aybar could miss four weeks. ... The Angels optioned INF Matt Brown to Triple-A Salt Lake and recalled INF Brandon Wood. ... Toronto SS David Eckstein (hip flexor) was expected to come off the disabled list Thursday but felt sore after playing in an extended spring game Monday and will spend an extra few days rehabbing in Florida.