NEW YORK (AP) Matt Harvey rediscovered his form with seven dominant innings of two-hit ball, Neil Walker homered off Jose Quintana, and the New York Mets beat Chicago 1-0 Monday to send the reeling White Sox to their seventh straight loss.

Harvey (4-7) has been one of baseball's biggest puzzles, transforming from a premier pitcher to baffled ballplayer.

With both teams wearing special Memorial Day uniforms with camouflage lettering and trim, Harvey struck out six and walked two to win for the first time since May 8. His fastball velocity was up markedly, and he threw 61 of 87 pitches for strikes.

More from FoxSports

Addison Reed struck out two in a perfect eighth. After wasting a four-run lead in the Mets' win over Los Angeles on Friday and giving up a pair of ninth-inning runs in Sunday's loss to the Dodgers, Jeurys Familia got three straight outs to remain perfect in 17 save chances. He has converted 33 consecutive save opportunities dating to last season.

Quintana (5-5) was almost as good but has lost four straight starts for the first time in his big league career. He allowed four singles before Walker led off the Mets' seventh with his 12th homer, a drive over the 370-foot sign in left.

RED SOX 7, ORIOLES 2

BALTIMORE (AP) - Xander Bogaerts extended his hitting streak to 23 games and drove in two runs, Jackie Bradley put Boston ahead for good with a sixth-inning homer and the Red Sox beat Baltimore in a matchup of the top two teams in the AL East.

David Ortiz and rookie Marco Hernandez also homered for the Red Sox, who stretched their division lead to two games. Both drives came in a four-run eighth.

Knuckleballer Steven Wright (5-4) pitched a four-hitter, striking out seven and walking five in his third straight complete game.

Mookie Betts scored twice on RBIs by Bogaerts before Bradley connected off Tyler Wilson (2-4) leading off the sixth. Bradley's 29-game hitting streak, which ended last week, is the only one this season longer than Bogaerts' career-best run.

CUBS 2, DODGERS 0

CHICAGO (AP) - Travis Wood and three other relievers combined for seven perfect innings after starter Jason Hammel left with cramps, and Chicago held Los Angeles to one hit in a victory.

Hammel exited after his right hamstring cramped while warming up for the third inning. Wood (3-0) pitched four perfect innings in his longest stint of the season.

Justin Grimm, Pedro Strop and Hector Rondon pitched one inning each for the Cubs, with Rondon getting his ninth save. He has converted 20 straight save opportunities dating back to Aug. 14.

Ben Zobrist extended his hitting streak to a career-high-tying 16 games. He singled leading off the fifth and reached third when right fielder Yasiel Puig misplayed the ball. He scored on Jason Heyward's infield single.

Dodgers starting pitcher Alex Wood (1-4) gave up two runs and seven hits in five innings.

NATIONALS 4, PHILLIES 3

PHILADELPHIA (AP) - Daniel Murphy hit a solo homer and tiebreaking two-run single, Tanner Roark threw seven sharp innings and Washington held on for a win over Philadelphia.

Bryce Harper left the game shortly after taking a fastball off the outside part of his right knee in the seventh. The reigning NL MVP went to first base, got doubled off on Murphy's fly out to left and was replaced by Chris Heisey in right field in the bottom half.

Roark (4-4) gave up two runs and four hits. Felipe Rivero pitched the eighth and Jonathan Papelbon escaped trouble in the ninth for his 14th save in 16 tries.

Maikel Franco and Ryan Howard hit consecutive doubles off their former teammate to start bottom of the ninth and get the Phillies within one run. But Papelbon struck out pinch-hitter Tommy Joseph and Cesar Hernandez and retired Tyler Goeddel on a liner to second.

Jeremy Hellickson threw seven impressive innings for the Phillies before the Nationals rallied off Hector Neris (1-2).

BLUE JAYS 4, YANKEES 2

TORONTO (AP) - Marco Estrada pitched eight scoreless innings, Ryan Goins homered and Toronto beat New York for its fifth win in six games.

Estrada (3-2) allowed three hits and won back-to-back starts for the first time this season. He beat the Yankees in New York last week.

Estrada's start came at a perfect time for the Blue Jays bullpen, which was worn down following Sunday's 11-inning loss to Boston. Four Toronto relievers, including closer Roberto Osuna, were unavailable against New York.

After Aaron Loup gave up a two-run home run to Brian McCann in the ninth, Drew Storen came on and got the final two outs for his third save.

Ivan Nova (3-3) allowed four runs and eight hits in six-plus innings, losing to Toronto for the second straight start.

CARDINALS 6, BREWERS 0

MILWAUKEE (AP) - Matt Carpenter had four hits and scored three times, Carlos Martinez pitched eight innings and St. Louis beat Milwaukee.

Martinez (5-5) allowed five singles, walked one and struck out eight, rebounding nicely after having allowed at least four runs in each of his three previous starts.

Carpenter sparked the offense from the leadoff spot. He even scored from second in the seventh after catcher Jonathan Lucroy lost track of a wild pitch by Jhan Marinez that trickled to the backstop.

St. Louis also took advantage of shaky defense to score three runs in the third off Junior Guerra (3-1), who allowed eight hits and three earned runs in 6 1/3 innings.

ATHLETICS 3, TWINS 2

OAKLAND, Calif. (AP) - Coco Crisp homered leading off the game, Khris Davis hit a tiebreaking sacrifice fly in the sixth inning and Oakland beat Minnesota.

Jed Lowrie added two hits and scored the game-winning run for Oakland while first baseman Yonder Alonso singled, scored and made a diving catch to end a threat in the seventh and strand the potential tying and go-ahead runs in scoring position.

Kendall Graveman (2-6) pitched six uneven innings to win for the first time in more than a month for the A's. Oakland has won three straight since dropping the opener of this six-game homestand.

All of the A's runs came off Twins starter Erwin Santana, who had only lost twice in 12 previous career starts at the Coliseum. Santana (1-4) gave up seven hits in seven innings with five strikeouts.

REDS 11, ROCKIES 8

DENVER (AP) - Adam Duvall had his first career two-homer game, Joey Votto hit his 200th homer and Eugenio Suarez - who came in mired in an 0-for-28 skid - also went deep in Cincinnati's victory over Colorado.

Zack Cozart also homered for the light-hitting Reds, who collected a season-best 17 hits.

The Rockies gave up five homers after entering the game having allowed a major league-low 15 in the month of May.

Dan Straily (3-2) overcame a slow start and an early 5-1 deficit to pick up the win. He helped himself by drawing a walk and scoring a run in Cincinnati's five-run fourth inning rally that turned things around.

Votto led off the seventh with his eighth homer, a no-doubt shot off Jason Motte over the scoreboard in right that made him the seventh Reds player to have 200 homers among his 1,000-plus career hits.

Straily surrendered Daniel Descalso's bases-clearing double and gave up an RBI single to Gerardo Parra in the third when swirling winds wreaked havoc on fly balls.

Straily drew a walk from Chad Bettis (4-4) in the fourth, when the Reds rebounded for five runs and seven hits to chase Bettis, who failed to hold a 5-1 lead.

ASTROS 8, DIAMONDBACKS 3

PHOENIX (AP) - Collin McHugh struck out eight in his first career complete game, Jason Castro had three RBIs and Houston continued its recent surge with a win over Arizona.

The Astros jumped on Edwin Escobar (0-1) in his first big league start, scoring eight runs off the left-hander in 3 1/3 innings.

Castro hit a two-run double off Escobar in the third inning and Houston had 13 hits overall to win for the sixth time in seven games. Astros leadoff hitter George Springer added three hits, two runs and an RBI.

McHugh (5-4) gave up a solo homer to Paul Goldschmidt in the first inning, but retired 21 of the next 22 batters in the five-hitter.

MARINERS 9, PADRES 3

SEATTLE (AP) - Kyle Seager's two-run homer in the sixth inning snapped a 2-all tie and Dae-Ho Lee's three-run shot capped a five-run eighth inning to give Seattle a victory over San Diego.

Seager's ninth homer of the season broke a 2-all tie and capped a four-run sixth inning for the Mariners. The two-run shot bounced off the top of the wall in right-center field and barely eluded the glove of San Diego's Matt Kemp.

The Padres lost for the seventh time in eight games as starter Andrew Cashner (2-5) pitching a season-high 6 1/3 innings.

Seattle did very little the first two times through the batting order against Cashner, but was given a chance to rally thanks to a solid outing from Nathan Karns (5-1), who won his fifth straight decision.

BRAVES 5, GIANTS 3

ATLANTA (AP) - Mallex Smith hit a three-run triple in the second inning, Mike Foltynewicz continued his recent upswing by allowing only three hits and one run in six-plus innings and Atlanta beat Jeff Samardzija and San Francisco Giants.

The Braves survived San Francisco's two-run, ninth-inning rally.

Brandon Crawford's run-scoring single in the ninth was the Giants' third straight hit off Arodys Vizcaino. The closer struck out Jarrett Parker before second baseman Kelly Johnson bobbled pinch-hitter Buster Posey's grounder, allowing another run to score. Kolby Tomlinson's grounder to third base ended the game.

Foltynewicz (2-2) gave up a leadoff homer to Brandon Belt in the second inning but allowed only one other runner to advance to second. He was lifted after allowing a leadoff single to Hunter Pence in the seventh, only his third hit allowed. He had two walks and four strikeouts and lowered his ERA to 3.51.

Samardzija (7-3) was looking for his fourth straight win as a starter for the first time in his career. The right-hander allowed five runs, four earned, and six hits and two walks in five innings - his shortest start of the season.

RANGERS 9, INDIANS 2

CLEVELAND (AP) - Nomar Mazara hit a three-run homer, Ian Desmond had a two-run shot and Texas beat Cleveland.

Derek Holland (4-4) pitched six innings and gave up one run - a solo homer by Mike Napoli - to win for the first time since April 30.

Josh Tomlin (7-1) lasted 3 2/3 innings and lost for the first time since Sept. 15. The right-hander was 12-0 in 13 starts following a Cleveland loss dating back to last season.

PIRATES 10, MARLINS 0

MIAMI (AP) - Jeff Locke tossed a three-hitter and Pittsburgh beat Miami.

Gregory Polanco's grand slam, Sean Rodriguez's two-run homer, and David Freese's four hits helped power the offense for the Pirates, who won the first of a four-game series in Miami. The first two games were originally scheduled to be played in Puerto Rico, but were moved due to concerns of the Zika virus.

Locke (4-3) struck out one and did not walk a batter while throwing 67 of 105 pitches for strikes. It was his first complete game in 101 career starts. Locke retired 19 straight at one point and needed just six pitches to get through the seventh inning.

The announced crowd of 10,856 was a season-low for the Marlins, who entered the day averaging just under 20,000.

Marlins starter Justin Nicolino (2-3) allowed three runs and six hits in five innings.

ROYALS 6, RAYS 2

KANSAS CITY, Mo. (AP) - Eric Hosmer hit a three-run homer after Lorenzo Cain drove in the go-ahead run in a four-run eighth inning and Kansas City defeated Tampa Bay.

The Royals have won four straight, matching their season best streak, and have scored 19 runs after the sixth innings in those victories.

Cain's single scored Alcides Escobar with the first run of the inning before Hosmer took a pitch from Erasmo Ramirez (6-3) deep to right-center for his 10th home run.

Kelvin Herrera (1-1) blew the save, allowing a run in the eighth, but he picked up the victory. Steve Pearce scored from second on an infield single by Steven Souza Jr. to tie it at 2.