Pete Crow-Armstrong (Harvard-Westlake) hit his 15th home run, Matthew Boyd tossed six innings of four-hit ball, and the Cubs edged the Colorado Rockies 2-1 on Wednesday night in Chicago for their fourth straight win.

Seiya Suzuki doubled in a run and rookie Matt Shaw had two hits for the NL Central leaders, who have won 10 of 12.

Boyd (5-2) allowed just an unearned run while striking out eight and walking none. Three relievers followed, with Daniel Palencia pitching a perfect ninth for his fourth save.

Tyler Freeman had a sacrifice fly for the Rockies, who lost their fifth straight and fell to 9-47 — the worst record in the majors.

Chicago jumped ahead 1-0 in the first on Suzuki’s double to the left-center wall. Crow-Armstrong made it 2-0 in the fourth when he golfed a low curveball down the right-field line.

Astros 5, Athletics 3: Zach Dezenzo homered and Victor Caratini drove in two runs in the seventh inning to help host Houston rally for a victory over the Athletics.

The Athletics led by one when rookie Justin Sterner (1-1) took over for Luis Severino to start the seventh. Dezenzo sent his fourth pitch 416 feet to center field for his second homer this season to tie it at 3-all.

There were runners on second and third with two outs in the inning when Caratini lined a single to center field to score both.

Blue Jays 2, Rangers 0: Bo Bichette hit a pinch-hit, two-run homer in the ninth inning, five Toronto pitchers combined on a one-hitter, and the Blue Jays won in Arlington, Texas.

Bichette, who was out of the starting lineup because of lower back soreness, hit an 0-1 fastball from Jacob Webb (2-3) just over the left-field wall with two outs.

Brendon Little (3-0), the fourth Blue Jays pitcher, struck out the only two batters he faced. Jeff Hoffman then had a strikeout in a perfect ninth for his 12th save in 15 chances to close out Toronto’s third shutout this season.

Brewers 6, Red Sox 5 (10): Caleb Durbin’s sacrifice fly drove in the winning run for host Milwaukee, which earned its first sweep of the season. For the second consecutive day, the Brewers won in walk-off fashion in extra innings.

Durbin’s late-game heroics capped off a two-hit, three-RBI day and included a two-run double that gave Milwaukee its first lead of the day.

Boston tied the game in the seventh on Wilyer Abreu’s 13th home run of the season and pulled ahead in extra innings when Nick Sogard scored against Milwaukee left-hander Tyler Alexander (3-5).

Pirates 10, Diamondbacks 1: Paul Skenes (4-5) dominated in six-plus scoreless innings, O’Neil Cruz hit a two-run homer, and Pittsburgh rolled over Arizona in Phoenix.

The Pirates rallied from down 6-2 with seven runs in the eighth inning to beat the Diamondbacks 9-6 on Tuesday night. There was no need for a comeback with Skenes on the mound. Last year’s NL rookie of the year allowed four hits, struck out seven and walked none in 6 2/3 innings. Skenes has not allowed more than six hits in an MLB-record 35 starts to open his career.

Marlins 10, Padres 8: Agustín Ramírez had the first four-hit game of his career including a home run and a go-ahead two-run single as Miami won in San Diego.

Ramírez went 4 for 5 with four RBIs and two runs scored. Eric Wagaman and Otto Lopez added three hits each with Lopez hitting a three-run homer. Javier Sanoja hit two doubles.

Tigers 4, Giants 3: Justyn-Henry Malloy hit a go-ahead single in a four-run fifth inning to help host Detroit rally to beat San Francisco.

The American League-leading Tigers swept the three-game series and closed their homestand with a four-game winning streak.

Detroit generated all of its offense in the fifth with Colt Keith’s two-run double and Malloy’s two-out, two-run single.

Royals 3, Reds 2: Noah Cameron pitched into the seventh, scattering six singles, as host Kansas City beat Cincinnati to salvage the final game of the series. Cameron (2-1) allowed a run on six hits and two walks.

Cardinals 6, Orioles 4: Brendan Donovan hit a two-run homer, Masyn Winn had four hits, and visiting St. Louis beat Baltimore.

Rays 5, Twins 0: Brandon Lowe and Junior Caminero hit fourth-inning home runs, and Drew Rasmussen allowed one hit in six innings to lead the Rays to a win in Tampa, Fla.