SAN FRANCISCO (AP) – Troy Tulowitzki homered and drove in three runs, J.A. Happ allowed five hits in 8 2/3 innings and the Toronto Blue Jays beat the San Francisco Giants 4-0 on Tuesday night for their sixth victory in eight games.

Happ (5-0) was one out away from his first complete game since August 2010. He walked three and struck out five in beating the Giants for the first time in five starts. He also singled in the eighth.

Roberto Osuna came on to walk Matt Duffy, loading the bases, before getting Jarrett Parker on strikes for his eighth save.

Tulowitzki hit a solo shot against Matt Cain (0-5) with one out in the second and followed Michael Saunders’ seventh-inning triple with a sacrifice fly.

Saunders, who had three hits, also scored on Tulowitzki’s ninth-inning double. Russell Martin singled home a run in the ninth, ending a 0-for-17 streak.

A .333 hitter (22 for 66) against Cain, Tulowitzki delivered his 12th extra-base hit against the right-hander, and his sixth homer.

Thanks to a pair of double plays and a caught stealing, Happ faced two over the minimum through seven innings.

Kelby Tomlinson had two hits for the Giants, who lost their third straight and five of seven overall.

The Giants were shut out for the second time in three days and third overall. They have scored three runs over their past 40 innings – allowing 10.

Cain, winless in his last 14 starts dating to last year, pitched his best game of the season. He gave up two runs on six hits over eight innings in his longest outing. He did not walk a batter and struck out seven.

Happ pitched around Tulowitzki’s throwing error to get out of jam in the eighth. Parker singled and went to third on Tomlinson’s grounder to Tulowitzki, who tried to get the force at second and threw it into right field. Parker was the only Giant to venture past second base safely.

TRAINER’S ROOM

Blue Jays: RHP Gavin Floyd was not available Tuesday after pitching back-to-back games for the first time this season.

Giants: RHP George Kontos will throw an inning at Triple-A Sacramento as part of his rehab assignment. … RHP Sergio Romo increased his throwing program, extending it to 105 feet. He also threw 20 pitches in his last session off the mound. … IF Brandon Crawford was given a scheduled day off. … OF Angel Pagan had a good day of baseball activities and was scheduled to take batting practice.

UP NEXT

Blue Jays: RHP Marcus Stroman (4-0, 3.60) gets the call for Wednesday afternoon’s series finale. He’s given up three runs over his last 15 innings (1.80 ERA) and has five quality starts on the year. This will be his first start against the Giants.

Giants: LHP Madison Bumgarner (4-2, 3.14) gets the start for the Giants in Wednesday’s matinee. He’s won each of his last three starts with a 2.25 ERA during that span. He’ll make his first start against the Blue Jays.