Consecutive bloopers by the last-place Marlins fell for hits in short right-center during their four-run second inning against Ted Lilly (15-8).
Willis (10-15) struck out seven and won for only the third time in 15 decisions since May 29.
Willis took a one-hit shutout into the eighth, then walked Geovany Soto and gave up Craig Monroe's first homer to make it 4-2.
Nationals 10, Mets 9
At New York, the Mets scored six runs in the bottom of the ninth but came up one short against Washington and lost its fifth straight home game.
The Mets' magic number for clinching its second consecutive NL East title was cut to four when second-place Philadelphia lost to Atlanta.
New York trailed 10-3 in the ninth. Jose Reyes hit a three-run shot off Jesus Colome for his second homer of the game to cut the deficit to four. Moises Alou hit a three-run double off Chad Cordero for his fourth hit to make it 10-9.
Nationals manager Manny Acta made an unorthodox move of pulling his closer for setup man Jon Rauch. The big right-hander struck out Carlos Delgado and got Paul Lo Duca on a pop up to shallow right with the tying run at third.
Braves 10, Phillies 6
At Philadelphia, Mark Teixeira hit a three-run homer and Chipper Jones had a two-run shot to help Atlanta down Philadelphia and keep its slim playoff hopes alive.
In other games, it was: Pirates 6, Diamondbacks 5; Padres 6, Giants 4; Rockies 9, Dodgers 7; Astros 8, Reds 5.



