The Houston Astros snapped out of their offensive slump in a big way.

Alex Bregman hit a two-run homer and Marwin Gonzalez added a three-run shot as part of a nine-run fourth inning, helping the Astros end a three-game losing streak with a 16-7 victory over the Toronto Blue Jays on Friday night.

Tyler White had four hits, including a two-run homer in the sixth and a solo drive in the eighth, and finished a triple shy of the cycle.

Houston scored seven runs during its skid.

"Everyone was swinging the bat," White said. "We were all seeing good pitches to hit and putting good swings on them. That's all you can do. We caught a few barrels and hit a few holes."

Every Astro hitter had at least one hit.

The Astros are now 3-2 against the Blue Jays in five games this season, and have outscored them 53-24.

Yuli Gurriel had a two-run homer in the first, an RBI single in the third and also finished a triple shy of the cycle.

Game Wrap: Astros dominate Blue Jays in series opener1:47

"It's not unusual for us to have big nights when we put good at-bats together," Houston manager A.J. Hinch said. "We hung in there and put together a really good game."

Brad Peacock (10-1) allowed a season-high seven runs on nine hits with six strikeouts in six innings for his seventh straight win.

Cesar Valdez (1-1) allowed six runs on six hits in 3 1/3 innings in his second straight rough start.

"Did you guys see the game?" Valdez said through a translator. "You saw what happened. It was just a bad outing."

Bad 4th inning

Houston sent 15 batters to the plate in the fourth, which included eight hits and four walks against three Blue Jays pitchers. Every Astros hitter reached base in the inning as Houston built a 12-2 lead.

"Really the whole inning, we had 14 out of 15 excellent at-bats," Hinch said. "We've had some big innings this year. That's a good one."

White hit an RBI double and single in the fourth, and Derek Fisher had an RBI groundout before Bregman launched his 13th home run to give Houston a 7-2 lead. After Josh Reddick singled and Gurriel walked, Gonzalez, who had an RBI single in the seventh, followed with his 20th home run. Jake Marisnick added an RBI single to cap the scoring.

"Everybody is fired up," Bregman said about the inning. "We've done that a couple times this year. It's just a blast. Everyone is trying to put together quality at-bats and pass the torch to the next guy."

Kendrys Morales, who finished a triple shy of the cycle, hit a two-run homer in the fourth, and Russell Martin had a solo homer in the fifth. Ryan Goins hit a three-run homer as part of a four-run sixth.

"We ended up scoring some runs, too, and we usually feel pretty good when we score that many runs," Toronto manager John Gibbons said. "But they just kept adding on and adding on, and it didn't matter what we did. But they can do that. They're a great-hitting team."

Jays' moves

The Toronto Blue Jays optioned right-handed pitcher Joe Biagini to triple-A Buffalo on Friday.

Biagini, who has split time as both a starter and reliever this season, is 3-8 with a 5.11 earned-run average in 37 games.

Catcher Miguel Montero was placed on the 10-day disabled list with a groin strain while fellow catcher Rafael Lopez had his contract selected from Buffalo. Reliever Danny Barnes was activated from the disabled list.

Montero exited Wednesday's game against the Chicago White Sox late after pulling up while making a throw to first base. He joined the Blue Jays in early July after being acquired from the Chicago Cubs.

Lopez is hitting .288 with 16 home runs and 45 runs-batted in for Buffalo.

Barnes, 27, has been one of Toronto's top relievers this season, going 2-3 with a 3.09 ERA in 37 appearances.