PITTSBURGH — Jeff Locke ran his winning streak to eight games, Pedro Alvarez hit a three-run homer and the Pittsburgh Pirates hung on to beat the Philadelphia Phillies 6-5 Wednesday night.
Locke (8-1) was scored upon for the first time in four home starts but extended his unbeaten streak to 16 outings. Locke, who hasn't lost since his first start of the season, allowed two earned runs on seven hits and three walks over 52/3 innings.
The Pirates took the lead with a four-run fifth punctuated by Alvarez's 21st home run.
Andrew McCutchen reached base five times, scoring twice for the Pirates (52-31), who have the majors' best record and had a nine-game winning streak snapped in the series opener Tuesday.
Delmon Young and Domonic Brown each had three hits for the Phillies, who have lost four of six.
Brown's two-run homer with two outs in the ninth pulled the Phillies within one, but Jason Grilli stuck out Young to seal his NL-best 28th save.
John Lannan (1-3) was tagged for four runs on 11 hits and three walks in five innings.
Reds 3, Giants 2, 11 innings
At Cincinnati, Shin-Soo Choo's two-out single in the 11th inning drove in Todd Frazier from second base, lifting Cincinnati over San Francisco.
Frazier walked to lead off the 11th against Javier Lopez (1-1) and went to second on Chris Heisey's sacrifice. After Devin Mesoraco was intentionally walked, Ryan Hanigan popped out before Choo gave the Reds three straight wins for the first time since June 10-12 against the Cubs.
The spiraling Giants have lost nine of their last 10 games.
Marlins 6, Braves 3
At Atlanta, Ricky Nolasco tossed seven strong innings amid persistent trade rumors, Justin Ruggiano hit a three-run homer and Miami beat Atlanta.
Diamondbacks 5, Mets 3
At New York, Randall Delgado outpitched Matt Harvey for his first major league win in more than a year and Arizona snapped a five-game skid with a victory over New York.
Brewers 4, Nationals 1
At Washington, Kyle Lohse tossed eight sharp innings on short rest and Milwaukee shut down Bryce Harper and Co. for the second straight night in a win over Washington.
Dodgers 10, Rockies 8
At Denver, Hanley Ramirez had four hits, including a solo homer in the ninth, to help Los Angeles hold off Colorado in a game outfielder Yasiel Puig left early with a bruised left hip.
Juan Uribe, Adrian Gonzalez and Matt Kemp also homered for the Dodgers, who have won 10 of their last 11 games to climb back into the thick of the NL West race.
Mariners 4, Rangers 2,10 innings
At Arlington, Texas, Kyle Seager hit a two-run homer in the 10th inning, and Seattle won consecutive games in Texas for the first time in more than a year.
Michael Saunders walked on a full-count pitch with two out before Seager connected against Robbie Ross (4-2) for his third hit of the game. Seager's 12th homer landed in the first row of seats in right field.
Charlie Furbush (2-4) pitched 12/3 scoreless innings for the win, and Tom Wilhelmsen was perfect in the 10th for his 17th save.
The Mariners last won two straight in Texas on May 29-30, 2012, when they took the last two of a three-game series. They'll go for a sweep Thursday night.
Tigers 6, Blue Jays 2
At Toronto, Max Scherzer worked into the seventh inning to become the first pitcher in 27 years to get off to a 13-0 start, leading the Detroit Tigers to a victory over the Toronto Blue Jays.
Alex Avila hit a three-run homer and Victor Martinez belted a solo shot as Detroit beat Toronto for the eighth time in 10 meetings.
Yankees 3, Twins 2
At Minneapolis, CC Sabathia earned his 200th career win to stretch his winning streak over Minnesota to nearly six years, and Robinson Cano hit a tying two-run double for the Yankees.
Orioles 4, White Sox 2
At Chicago, Chris Davis hit his major league-leading 32nd homer, and then added a tiebreaking two-run double in the eighth for Baltimore.
Astros 4, Rays 1
At Houston, Chris Carter hit a tiebreaking three-run shot in the seventh for his second homer of the game, leading Bud Norris and Houston to the victory.
Royals 6, Indians 5
At Kansas City, Mo., Eric Hosmer hit a go-ahead homer in the seventh inning, and the Kansas City Royals rallied after losing outfielder Alex Gordon to a head injury to beat the Cleveland Indians.
Cubs 3, Athletics 1
At Oakland, Calif., Matt Garza pitched eight sharp innings for his third consecutive win, helping the Cubs to their fifth victory in seven games.
Garza (4-1) allowed one run and four hits in his fourth consecutive quality start. The right-hander is 3-0 with a sparkling 0.90 ERA since yielding a season-high nine runs to the Cincinnati Reds on June 11.
With the Cubs well off the pace in the NL Central, Garza could be one of the top targets for contenders looking for pitching help ahead of the July 31 non-waiver trade deadline.
Cardinals 12, Angels 2
At Anaheim, Calif., Jon Jay had three RBIs, including a two-run homer off center fielder Mike Trout's glove during St. Louis' seven-run second inning, and the Cardinals ended the Angels' seven-game winning streak.
Red Sox 2, Padres 1
At Boston, Jonny Gomes led off the ninth inning with a pinch-hit home run, lifting the Red Sox to the victory.
Mike Carp had two hits and scored a run for Boston, which improved to 7-1 on its nine-game homestand that concludes today against the Padres.