Harper hit a go-ahead sacrifice fly in the top of the ninth before Washington's bullpen wasted a 3-1 lead in the bottom half.
Kemp drove a 1-2 pitch off Tom Gorzelanny (1-1) to centre field for his majors-leading 11th home run, breaking the Dodgers record for long balls in April set by Gary Sheffield in 2000. Kemp tossed his helmet as he galloped from third to home plate, where he was mobbed by teammates.
Jamey Wright (1-0) pitched a perfect inning for the win.
Harper, the Nationals' much-ballyhooed 19-year-old outfielder and the first overall pick in the 2010 draft, was 1 for 3 in his four plate appearances. In his third at-bat, he doubled to centre field over Kemp's head with two out in the seventh after hitting a comebacker in the first and flying out in the fifth.
PHILLIES 5, CUBS 2
PHILADELPHIA (AP) — Carlos Ruiz homered and drove in three runs, and Joe Blanton threw 7 1-3 sharp innings to lead Philadelphia over Chicago.
Jimmy Rollins, in the leadoff spot for the first time this season, added a two-run double for the Phillies, the five-time defending NL East champions who are off to a 10-11 start.
Blanton (2-3) allowed two runs and eight hits, striking out eight. Chad Qualls got the last two outs in the eighth and Jonathan Papelbon finished for his seventh save in as many tries.
Bryan LaHair hit an RBI double and Randy Wells (0-1) couldn't make it out of the fourth inning for Chicago. Wells gave up four runs and three hits in 3 2-3 innings.
MARLINS 3, DIAMONDBACKS 2
MIAMI (AP) — Hanley Ramirez hit a run-scoring single with two outs in the ninth inning to end Miami's losing streak at six with a win over Arizona.
Ramirez's line drive to left off reliever Brad Ziegler scored Giancarlo Stanton after he reached on a one-out infield single and advanced to second on Emilio Bonifacio's grounder to first. Ziegler (0-1) intentionally walked Jose Reyes to face Ramirez.
Steve Cishek (2-0) got the win with a perfect ninth for Miami, which got a 14-strikeout performance out of starter Anibal Sanchez.
Logan Morrison hit a leadoff homer for Miami in the eighth to tie it 2-2.
GIANTS 2, PADRES 1
SAN FRANCISCO (AP) — Tim Lincecum pitched eight sharp innings in his longest start of the season and had an infield single with two outs in the sixth for San Francisco's first baserunner against Anthony Bass in the win over San Diego.
Brandon Belt hit a two-run double off Bass with two outs in the seventh.
Lincecum (2-2) overcame some early control problems and allowed three hits. The former two-time NL Cy Young Award winner struck out five and walked four.
Pablo Sandoval went hitless in four at-bats for the Giants, ending his 20-game hit streak.
Bass (1-3) allowed six hits and struck out a career-high eight.
PIRATES 4, BRAVES 2
ATLANTA (AP) — Alex Presley had two hits, extending his hitting streak to 12 games, drove in two runs and also scored to help Pittsburgh beat Atlanta.
Pedro Alvarez added a run-scoring double for the Pirates and Erik Bedard (1-4) gave up only one run in five innings. The left-hander struck out nine while giving up five hits and two walks. He has not allowed more than two earned runs in any of his five starts.
Joel Hanrahan worked a perfect ninth for his fourth save.
The Pirates scored a total of two runs with Bedard on the mound in his first four starts.
Randall Delgado (2-2) gave up four runs on eight hits and three walks in 4 1-3 innings.
CARDINALS 7, BREWERS 3
ST. LOUIS (AP) — Yadier Molina went 4 for 4 with a two-run homer, and Kyle Lohse allowed three runs over six innings to run his record to 4-0 as St. Louis beat Milwaukee.
Molina's home run to left field with one out in the sixth off Milwaukee starter Marco Estrada (0-1) broke a 3-3 tie. Molina has 10 four-hit games in his career, the last coming on May 22, 2011, against Kansas City.
Cardinals third baseman David Freese celebrated his 29th birthday with a solo home run and Jon Jay had three hits, including an RBI single, and a stolen base for the Cardinals.
Aramis Ramirez and Alex Gonzalez had solo home runs for the Brewers.
METS 7, ROCKIES 5
DENVER (AP) — Dillon Gee shook off one tough inning in an otherwise strong outing, Lucas Duda homered and singled to drive in four runs, and New York beat Colorado.
Ruben Tejada, Daniel Murphy and David Wright each added three hits and scored five times collectively, helping the Mets bounce back from Friday night's sloppy 18-9 loss to Colorado.
Gee (2-2), on his 26th birthday, allowed four runs in seven innings. He struck out seven and walked two, keeping the Rockies in check for most of the night except for a rough patch in the fourth when Colorado scored three of its runs.
Guillermo Moscoso (0-1) gave up six runs on nine hits in five innings for the Rockies.
REDS 6, ASTROS 0
CINCINNATI (AP) — Jay Bruce homered for the third consecutive game and drove in four runs to back Johnny Cueto's solid effort as Cincinnati beat Houston.
Bruce had a two-run double and Brandon Phillips added two hits for the Reds, who improved to 3-2 on a nine-game homestand.
Cueto (3-0) allowed five hits and a walk while hitting a batter and striking out just three over seven innings, but he mad enough quality pitches to keep the Astros in check.
Lucas Harrell (1-2) allowed nine hits and six runs — five earned — with one walk and one strikeout in six innings for Houston.