By taking the rubber match of the three-game set, the Blue Jays (13-21) have won two straight series for the first time this season. The Indians (18-15) finished their nine-game road trip at 4-5.
The Blue Jays missed a chance in the eighth when Goins led off with a single to center against Bryan Shaw. Devon Travis sacrificed Goins to second. Darwin Barney singled to shortstop as Goins held second. Luke Maile ended the inning when he bounced to second to start a double play.
Roberto Osuna (2-0) pitched a perfect ninth for Toronto to collect the win.
Neither starter survived the third inning.
Toronto left-hander Francisco Liriano allowed seven runs, five hits and three walks in two-plus innings.
Cleveland right-hander Danny Salazar gve up five runs, five hits and two walks in 2 2/3 innings. He struck out four.
Bautista answered for the Blue Jays in the bottom of the inning with a three-run homer. Kevin Pillar, who had a leadoff walk, and Carrera, who singled, scored on Bautista's third home run of the season.
The Indians regained the lead with five runs in the third inning. A leadoff walk to Santana and singles by Lindor and Kipnis produced one run. Edwin Encarnacion walked and Blue Jays pitching coach Pete Walker was ejected by home plate umpire Vic Carapazza during his visit to the mound.
Jose Ramirez hit an RBI single to right to put Cleveland ahead 4-3. Dominic Leone replaced Liriano and Guyer greeted him with a three-run double to give the Indians a 7-3 lead.
The Blue Jays got two back in their third. Bautista walked, took third on Justin Smoak's double and scored on Steve Pearce's sacrifice fly. Goins followed with an RBI single before Dan Otero replaced Salazar.
Darwin Barney led off the fourth with a double and scored ahead of Carrera, who hit his third homer of the season with two outs to tie the score at 7.
NOTES: Cleveland OF Abraham Almonte (right shoulder) left the game in the top of the second inning when he was injured flying out to right field. He was replaced in center field by OF Michael Martinez. ... Cleveland C Yan Gomes (illness) was replaced by C Roberto Perez in the bottom of the third. ... DH Kendrys Morales (left hamstring) was not in the lineup after leaving the game Tuesday with hamstring tightness. ... Toronto opens a four-game series with Seattle on Thursday with Blue Jays RHP Marco Estrada (1-2, 3.14 ERA) facing Mariners RHP Chase De Jong (0-2, 6.75). ... Cleveland has Thursday off before starting Josh Tomlin (2-3, 7.12 ERA) against Minnesota Twins RHP Ervin Santana (5-1, 1.72 ERA) Friday in the opener of a three-game set at Progressive Field.