PITTSBURGH - Jeff Locke followed consecutive horrible starts with 6 2/3 scoreless innings, Erik Kratz hit his first home run since 2014 and the Pittsburgh Pirates beat San Francisco 1-0 on Monday night, ending the Giants' eight-game winning streak.

Locke (6-5) allowed five hits, no walks and struck out three, helping the Pirates to their second win in 12 games. He had allowed 18 runs and 20 hits over 8 2/3 innings during his previous two outings.

Madison Bumgarner (8-3) was the tough-luck loser, allowing one run in eight innings while having his seven-game winning streak snapped. The left-hander had his 12th straight start allowing two earned runs or fewer and gave up five hits while striking out eight and walking two.

It was Bumgarner's second complete game this season and the 12th of his career.

Kratz's shot with two outs in the fifth popped out of Angel Pagan's glove and fell into the first row of seats when the leaping left fielder crashed into the fence. It was his first home run since a two-homer game for Kansas City in August 2014.

Mark Melancon pitched the ninth for his 20th save in 21 chances.

CARDINALS 3, CUBS 2

CHICAGO - Brandon Moss and Jhonny Peralta homered against John Lackey, and St. Louis stopped a five-game slide by holding off Chicago.

Aledmys Diaz added an RBI single and Jaime Garcia (5-6) pitched into the seventh inning as the Cardinals got back on track following their first winless homestand of at least two series since 1983. It was their first trip to Wrigley Field since they were eliminated by the Cubs in their NL Division Series last year.

Lackey (7-3) allowed three runs over six innings against his former team, but Garcia and two relievers held the major league-leading Cubs in check.

Seung Hwan Oh got four outs and Trevor Rosenthal worked a shaky ninth for his 13th save in 15 chances. Jason Heyward popped out with runners on the corners to end it.

DODGERS 4, NATIONALS 1

LOS ANGELES - Clayton Kershaw yielded six hits over seven dominant innings to earn his ninth victory in 10 starts, and Los Angeles beat Washington for its fourth straight victory.

Washington scratched Stephen Strasburg about 80 minutes before game time due to an upper back strain, depriving Chavez Ravine of a tantalizing pitchers' duel with Kershaw (11-1).

Pitching in 96-degree heat, the Dodgers' ace still added eight strikeouts to his major league-leading 141, fanning Bryce Harper three times. Kershaw didn't walk a batter and got through a tricky seventh inning to remain unbeaten since May 1.

Kenley Jansen became the Dodgers' career saves leader in the ninth. He surpassed Eric Gagne with his 162nd save, including 20 this season in 23 chances.

Late replacement Yusmeiro Petit (2-1) pitched six solid innings of five-hit ball in his first start for the NL East-leading Nationals, who have lost three straight.

Justin Turner homered and drove in two runs, and Joc Pederson also went deep in the Dodgers' sixth win in seven games. Los Angeles (39-33) is a season-high six games over .500.

WHITE SOX 3, RED SOX 1, 10 INNINGS

BOSTON - Jose Abreu doubled home two runs off Boston closer Craig Kimbrel with two outs in the 10th inning after Chicago escaped a bases-loaded, no-out jam in the ninth.

Chicago snapped a three-game losing streak and won for just the eighth time in 26 games. Boston has lost five of eight.

Zach Duke (2-0) wriggled out of the ninth to get the win. David Robertson worked the 10th for his 17th save.

Red Sox knuckleballer Steven Wright pitched nine innings, giving up only an unearned run and five hits. He lowered his AL-best ERA to 2.01.

Abreu doubled off Kimbrel (0-3) after Avisail Garcia walked and J.B. Shuck singled.

INDIANS 7, RAYS 4

CLEVELAND - Francisco Lindor and Juan Uribe homered in the eighth inning to lift Cleveland over Tampa Bay.

Lindor hit the first pitch from Erasmo Ramirez (7-5) to break a 4-all tie. Uribe homered in his third straight game, a two-run shot off Ramirez.

Carlos Santana also homered for the AL Central leaders, who have won four straight.

Evan Longoria's two-run homer in the first and a solo shot by Brad Miller in the sixth helped Tampa Bay build a 4-2 lead, but the Rays dropped their fifth in a row.

Bryan Shaw (1-3) struck out the side in the eighth, and Cody Allen pitched the ninth for his 14th save.

Tampa Bay right fielder Mikie Mahtook sustained a broken left hand when he was hit by Josh Tomlin's pitch in the second.

TIGERS 8, MARINERS 7, 12 INNINGS

DETROIT - Justin Upton hit a line drive over the left-field wall in the 12th inning for his second home run of the game, lifting Detroit past Seattle.

Upton connected on a 2-2 pitch from Vidal Nuno (0-1) leading off the 12th.

Miguel Cabrera hit a two-run homer for the Tigers in the first that cleared a brick wall in right-centre, bounced off a concrete concourse and out of Comerica Park. Upton's first homer of the night, a two-run shot that cleared a second tier of bushes beyond the centre-field wall, gave Detroit a 7-6 lead in the seventh.

Cameron Maybin had a two-run triple for the Tigers, and Anibal Sanchez (4-7) worked a scoreless inning for the win.

Kyle Seager and Adam Lind homered for the Mariners.

DIAMONDBACKS 3, PHILLIES 1

PHILADELPHIA - Shelby Miller threw 6 2/3 sharp innings, Jake Lamb hit a two-run homer and Arizona beat reeling Philadelphia to complete a four-game sweep.

Miller (2-6) allowed one run and five hits, striking out five in his first start since May 24. He had been on the disabled list with a sprained right index finger.

The Phillies went 0-6 on their first winless homestand of six or more games since September 1964, when they went 0-7 at Connie Mack Stadium before losing three more games in a historic collapse from first place.

Jeremy Hellickson (4-6) allowed three runs and four hits before getting an out.

Brad Ziegler pitched out of trouble in the ninth for his 15th save this season, converting his 43rd opportunity in a row.

ROCKIES 5, MARLINS 3

MIAMI - Mark Reynolds hit two homers to help power Colorado past Miami in a record-setting home run contest.

Trevor Story, Nick Hundley and Charlie Blackmon also went deep for the Rockies, who salvaged the finale of a four-game series.

Marcell Ozuna homered twice and Giancarlo Stanton hit one for the Marlins. The eight solo homers accounted for all the runs in the game, setting a major league record. The previous mark was five.

Stanton's home run, his 13th of the season, was his first in 16 games.

The eight home runs were also the most in a game at Marlins Park since it opened in 2012. Five of the game's first 13 batters connected.

Jorge De La Rosa (4-4) allowed three runs in six innings to earn the win. Carlos Estevez got his fourth save.

Marlins reliever Brian Ellington (1-1) took the loss after Paul Clemens yielded three runs over five innings in his season debut and first start since Sept. 28, 2013, with Houston.

RANGERS 4, ORIOLES 3

ARLINGTON, Texas - Shin-Soo Choo hit a go-ahead, two-run single, Ian Desmond homered halfway up the hill in centre field and streaking Texas beat Baltimore in a makeup game matching the American League's top two teams.

Texas extended its season-best winning streak to seven games, the last four being one-run decisions. Since the makeup of an April 17 rainout counted as a series, the AL West leaders stretched their club record to 10 consecutive series wins - the longest in the AL since Tampa Bay's 10 in a row three years ago.

Desmond's 11th homer was a solo shot in the third, an inning before Bobby Wilson had a sacrifice fly and Choo followed by lining a single off Kevin Gausman (0-5) for a 4-3 lead.

Shawn Tolleson (2-2) worked 1 2/3 scoreless innings in relief of Derek Holland. Tony Barnette threw two shutout innings before Sam Dyson worked the ninth for his 14th save in 15 chances, including 12 straight since taking over as the closer on May 18.

ASTROS 10, ANGELS 7

HOUSTON - Doug Fister threw seven solid innings and Jose Altuve, Jason Castro and Carlos Correa homered to help Houston beat Los Angeles.

Fister (8-3) gave up two runs and four hits in earning his seventh straight win. The Astros have won Fister's last 10 starts.

Pat Neshek got two outs for his first save.

Altuve hit a 431-foot solo homer to centre field in the fourth to give the Astros a 7-0 lead. Jhoulys Chacin (2-3) walked five while allowing six runs in two innings.