TORONTO -- Curtis Granderson hit a solo shot off Craig Kimbrel in the 10th inning to give the Toronto Blue Jays a 4-3 victory over the Boston Red Sox on Tuesday night at Rogers Centre.

Granderson belted a 2-0 pitch for a no-doubt shot to deep right field. It was his third homer of the season and fourth career walkoff blast.

The Red Sox have lost three in a row but still own the best record in the major leagues at 17-5. The Blue Jays (14-8) moved three games behind Boston in the American League East division standings.

Toronto right-hander Tyler Clippard worked one inning of relief for the victory.

The Red Sox tied the game in the ninth inning by scoring two runs off Blue Jays closer Roberto Osuna.

Eduardo Nunez drove in Hanley Ramirez to make it a one-run game and Brock Holt delivered a two-out single to bring Rafael Devers home with the tying run. Nunez tried to score on the play but Granderson threw him out at home to prevent Boston from taking the lead.

Toronto starter J.A. Happ deserved better than a no-decision after striking out 10 batters over seven innings. He allowed one earned run, four hits and did not issue a walk.

The Blue Jays put three runs on the board in the second inning. Devers, the Boston third baseman, had a rough frame and Toronto took full advantage.

With runners on the corners, Kevin Pillar hit a grounder to third but Devers was wide with his throw home to allow Steve Pearce to score.

Granderson hit a sharp grounder later in the frame that handcuffed Devers after it hit the seam where the turf meets the dirt infield. The ball bounced behind Devers and as he retrieved it, Aledmys Diaz and Devon Travis scampered home.

Happ rolled through the first five frames before the Red Sox got on the board in the sixth. Holt led off with a double and scored on a Ramirez flare that dropped in front of Pillar in centre field.

Boston starter Rick Porcello also worked seven innings. He gave up three earned runs, three hits, three walks and had nine strikeouts.

Ryan Tepera threw a scoreless eighth inning for Toronto before Osuna's first blown save of the season. Osuna allowed four hits and walked a batter over his 31-pitch outing.

Announced attendance was 20,070 and the game took two hours 51 minutes to play.

Before the game, the Blue Jays honoured the victims of Monday's deadly van attack in north Toronto.

Players from both teams stood in front of the dugouts for a moment of silence. Toronto police officers and paramedics were recognized for their efforts and a banner reading '.TorontoStrong' hung from the 200 level above the wall in centre field.

Notes: Blue Jays manager John Gibbons said he expects to provide an update Wednesday on plans for slugger Josh Donaldson. The third baseman is on the disabled list with a shoulder injury but is expected to return soon. ... Snowboarder Laurie Blouin threw out the ceremonial first pitch. She won a silver medal in women's slopestyle at the Pyeongchang Olympics last February. ... Aaron Sanchez (1-2, 3.86) is scheduled to start Wednesday night against Boston's Eduardo Rodriguez (2-0, 3.45).