TORONTO -- Three ejections. Thirty-four runners left on base. Nineteen pitchers, 19 innings, and just three runs scored.

The Cleveland Indians were the last team standing Friday after a marathon Canada Day game that lasted over six hours at Rogers Centre. Carlos Santana's solo homer in the 19th inning was the difference in a 2-1 victory over the Toronto Blue Jays.

Santana turned on a full-count pitch from Darwin Barney -- the second Toronto position player to take the mound -- for his 17th homer of the season.

Trevor Bauer (7-2), who was supposed to start Saturday's game, worked five innings of relief for the win after the Indians depleted their bullpen as well. Cleveland (49-30) set a franchise record with its 14th straight victory.

"I guess if you're going to set a record you might as well do it the hard way, right?" Bauer said.

Backup infielder Ryan Goins pitched the 18th inning for the Blue Jays. He came out to a loud ovation and loaded the bases before getting Chris Gimenez to hit into an inning-ending double play.

Toronto starter Marcus Stroman, who allowed one run over 6 2/3 innings, was the first one to greet Goins as he returned to the dugout.

"I'll probably look back like 10 years from now and say I'm tied for the best ERA in Major League Baseball so that's good," Goins joked. "I've got that going for me."

The Indians scored a run in the third inning and Justin Smoak's solo homer in the sixth was the lone Toronto run. It was the Blue Jays' eighth loss in 12 games.

Cleveland outhit Toronto 15-11 and both teams left 17 runners on base. It was the Blue Jays' longest game in innings since they went 19 frames against Detroit in August 2014.

Relievers for both teams were sharp despite a few close calls.

The Indians nearly took the lead in the 10th inning. Cleveland put two runners on but Kevin Pillar made a brilliant diving catch in centre field to end the threat.

The Blue Jays threatened in the 11th but Zach McAllister got Smoak to pop up with runners on the corners.

Toronto slugger Josh Donaldson grounded out with the bases loaded to end the 14th inning. Josh Thole nearly ended the game in the 15th but his flyout landed in Lonnie Chisenhall's glove on the warning track.

Both teams had runners in scoring position in the 16th but couldn't push a run across. And Donaldson nearly tied it in the bottom of the 19th with a blast to right field that died on the warning track.

Goins, who pitched at the university level, became the ninth different position player to pitch in a game for the Blue Jays and Barney (0-1) was the 10th.

"It was unfortunate we were in that situation," said Barney, who last pitched in high school. "I think plenty of us had opportunities to finish the game off and get the hit and we didn't. So it's our own fault that we had to go out there and pitch.

"Unfortunately it didn't go our way today."

Cleveland's streak is the longest in the major leagues in one season since the Atlanta Braves won 14 in a row in 2013.

Both teams will feel this game's effects for the rest of the weekend and into next week. It wouldn't be a surprise if both teams made some roster moves out of necessity.

"Everybody on both sides of the field pitched their hearts out," said Indians manager Terry Francona.

There were some early fireworks in the Canada Day matinee as Blue Jays slugger Edwin Encarnacion and manager John Gibbons were ejected in the first inning.

Encarnacion objected to umpire Vic Carapazza's called third strike on what appeared to be an outside pitch. Gibbons quickly came out of the dugout and was also thrown out.

Russell Martin was also tossed in the 13th inning after arguing with Carapazza.

"I just know that it wasn't the best display of umpiring that I've seen," Martin said.

In the third, Santana led off with a double and scored on a Jason Kipnis single. Cleveland also extended its road winning streak to eight games.

"It was a hell of a game," said Blue Jays acting manager DeMarlo Hale. "You hate to lose. These guys grinded and battled but now we've got to assess and see where we are for the next couple of days and the next series as well."

Toronto had some chances early on but couldn't convert. Smoak grounded out with the bases loaded in the fourth inning and Michael Saunders lined out with three runners on in the fifth.

Stroman threw over six innings for just the second time in his last seven starts. He retired 12 straight until giving up a leadoff single to Chisenhall in the seventh.

Notes: It was the first ejection of the season for Encarnacion and the sixth for Gibbons. Devon Travis replaced Encarnacion as designated hitter. ... Before the game, the Blue Jays presented a group of Canadian athletes with a signed banner to hang at Canada Olympic House during the Summer Games and Paralympics in Rio. ... There were Canada Day touches all around the stadium. Red bunting hung from the standing-room railings above the wall in centre field. Plates with holiday logos adorned the sides of the bases. The Blue Jays wore red shirts, hats and socks. Players from both teams had Canadian flag patches on their sleeves. ... IndyCar driver James Hinchcliffe of Oakville, Ont., threw out the ceremonial first pitch. ... Kipnis extended his hitting streak to 13 games. ... Announced attendance was 45,825. ... Marco Estrada (5-3, 2.81 earned-run average) is scheduled to start Saturday for Toronto.