Ross Detwiler (7-5) tossed six solid innings and the Nationals sent Santana to his fifth loss in the last five starts.
Handed a 2-0 lead, the two-time Cy Young Award winner was perfect through three innings. But the NL East leaders strung together four consecutive hits in the fourth, capped by Morse's 12th homer.
Harper added a two-run shot in the fifth. Tyler Clippard earned his 26th save.
The Nationals, who own the best record in baseball, have won 10 of 12 overall.
The Mets fell to 10-23 since the All-Star break and have dropped 10 of 13 to the Nationals this season.
Santana (6-9) permitted six runs and seven hits over five innings. He has a 15.63 ERA in his past five starts, allowing at least six runs in each appearance.
REDS 7, CUBS 3
CINCINNATI (AP) — Todd Frazier hit a two-run homer, Ryan Ludwick and Jay Bruce added solo shots, and Cincinnati beat Chicago in the opener of a four-game series.
Bronson Arroyo (9-7) overcame a shaky start to improve to 5-1 in his last six outings. He gave up nine hits and three runs in 6 1-3 innings.
The NL Central leaders have won six of seven. They had six extra-base hits in five innings against former teammate Travis Wood (4-9), who has lost his last six decisions after winning four straight starts.
BRAVES 4, DODGERS 3, 11 INNINGS
ATLANTA (AP) — Pinch-hitter Juan Francisco's two-out single in the 11th inning lifted Atlanta over Los Angeles for its fourth straight win.
Backup catcher David Ross and light-hitting Paul Janish kept the inning going with back-to-back singles off Brandon League (0-1) before Francisco punched one to left off Jamey Wright. Jonny Venters (4-3) earned the win.
The Braves rallied from a 3-1 deficit in the eighth on Martin Prado's run-scoring groundout and Jason Heyward's two-out single, ruining a strong performance by Dodgers starter Chris Capuano.
After giving up second-inning shot to Chipper Jones, his third homer in two nights, Capuano stifled the Braves until the eighth.
The Dodgers led after Andre Ethier's two-run homer off Tommy Hanson, and Shane Victorino added a run-scoring double in the seventh.
PIRATES 2, CARDINALS 1
ST. LOUIS (AP) — James McDonald halted a string of ineffective starts with six innings of two-hit ball, helping Pittsburgh beat St. Louis in the opener of a series between NL Central playoff contenders.
Andrew McCutchen singled and scored on a passed ball in a two-run fourth for the Pirates, who got their other run on a wild pitch that inning.
McDonald (11-5) was 0-2 in his previous four outings while allowing 20 earned runs over 21 1-3 innings.
Jake Westbrook (12-9) allowed one earned run and six hits in 7 2-3 innings for the Cardinals, who managed only one run for the second straight game.
Joel Hanrahan worked the ninth for his NL-leading 34th save in 37 chances. Matt Holliday lined out to the right-field wall to start the inning.
The Pirates have won just three of nine, but they moved two games ahead of St. Louis for the NL's second wild-card spot.
GIANTS 10, PADRES 1
SAN DIEGO (AP) — Matt Cain pitched eight dominant innings and San Francisco scored eight runs in the third to move into first place in the NL West with a blowout of San Diego.
Cain (12-5) allowed one run and four hits to improve to 6-0 in nine starts following a Giants loss. He struck out six and did not walk a batter.
Marco Scutaro homered and drove in two runs for San Francisco. Angel Pagan had three hits and two RBIs to lead a 15-hit outburst.
Ross Ohlendorf (4-4) gave up a career-high eight runs and six hits in 2 1-3 innings. The Padres had won 10 of 12 at home.
DIAMONDBACKS 3, ASTROS 1
HOUSTON (AP) — Wade Miley pitched six solid innings and drove in a run to lead Arizona past Houston.
Miley hit a sacrifice fly and Chris Young doubled in a run in the fifth for the Diamondbacks, who have won seven consecutive games against the Astros. Paul Goldschmidt added another RBI double in the eighth.
Houston is 6-28 since the All-Star break and 39-81 overall for the worst record in the majors.
Miley (13-8) allowed eight hits and walked none in his first win since July 31 at Los Angeles. J.J. Putz earned his 15th straight save and 24th overall.
Dallas Keuchel (1-5) gave up two runs and four hits in 6 2-3 innings, but remained winless since June 23. He is 0-5 with a 6.18 ERA in his last eight starts.
BREWERS 6, PHILLIES 2
MILWAUKEE (AP) — Ryan Braun hit his NL-leading 32nd home run, Yovani Gallardo won his fourth straight start and Milwaukee extended its home winning streak to nine with a victory over Philadelphia.
Braun, Gallardo and Nyjer Morgan drove in two runs apiece for the Brewers. Braun has three homers in two games after being given a day off Wednesday at Colorado. Before that, he was in a 6-for-42 skid (.142) with no homers in 10 games.
Gallardo (12-8) gave up one earned run and four hits in seven innings. He struck out nine.
Vance Worley (6-8) allowed four earned runs, seven hits and three walks in 4 2-3 innings for the Phillies.
MARLINS 6, ROCKIES 5
DENVER (AP) — Jose Reyes and Giancarlo Stanton homered in Miami's victory over Colorado.
The Marlins won for only the third time in 10 games. Steve Cishek pitched a perfect ninth to pick up his eighth save.
Wilin Rosario had two hits and two RBIs for the Rockies, who had their four-game winning streak stopped. Eleven of Colorado's 12 hits were singles.
Stanton tied it with a leadoff homer against reliever Josh Roenicke (4-1) in the sixth inning. Donovan Solano followed with a triple and scored on John Buck's double to give the Marlins a 6-5 lead.
Reyes hit a three-run homer off starter Jeff Francis in the fifth. Wade LeBlanc (2-2) allowed five runs and nine hits in five innings for his first win as a starter this season.