TORONTO -- Russell Martin homered and matched a season high with three hits, Josh Donaldson broke out of his slump with a go-ahead single and the Toronto Blue Jays beat the Houston Astros 7-4 on Thursday night.
Francisco Liriano (5-4) pitched six solid innings and Roberto Osuna converted his 21st consecutive save opportunity as the Blue Jays, who began the night last in the AL East, won their third straight. Houston, which has the best record in the majors at 58-28, had won four in a row and eight of 10.
Marwin Gonzalez and Carlos Beltran homered for the Astros, handed a rare defeat on the road. The AL West leaders fell to 31-10 away from home as All-Star pitcher Lance McCullers Jr. (7-2) lost for the first time since April.
All-Star shortstop Carlos Correa returned to Houston's lineup after sitting out the previous night with a sore left thumb. He extended the longest active hitting streak in the majors to a career-high 14 games with a single in the first inning.
Toronto trailed 2-1 before the game turned as the Blue Jays batted around in a five-run fifth. Donaldson, the 2015 AL MVP, ended an 0-for-15 slide with a two-run single that put Toronto in front.
Kendrys Morales added an RBI double and Troy Tulowitzki chased McCullers with an RBI single that snapped his 0-for-22 skid with runners in scoring position. Three batters later, Ryan Goins doubled home Tulowitzki.
Martin connected for his ninth homer in the sixth.
Liriano went six innings for the third straight game, giving up nine hits and three earned runs as the Blue Jays won for the eighth time in his last 11 starts. He was removed after facing one batter in the seventh.
Osuna worked his third consecutive game for the first time this year and earned his 22nd save in 25 chances.
Gonzalez extended his career high with his 15th home run of the season, a line drive over the left-center fence leading off the second. Beltran added his 11th with a no-doubter to right in the eighth.
Jose Altuve had three singles, a stolen base and two RBI for Houston. Alex Bregman was 3 for 3 with a walk and a pair of doubles as the Astros hit at least one double for the 43rd consecutive game to extend the franchise record.
In his first career start at Toronto, McCullers was charged with nine hits and six runs -- five earned -- in 4 1/3 innings. He had won a career-best five straight decisions since losing April 26 at Cleveland.