WASHINGTON (AP) -- Facing a struggling Washington lineup that can't seem to get a timely hit, Trevor Cahill had no trouble extending an impressive run by Arizona's starting rotation.
Cahill took a four-hit shutout into the eighth inning, and the Diamondbacks beat Washington 5-1 Tuesday night to stretch the Nationals' losing streak to five games.
Teenager Bryce Harper went 0 for 3 in his home debut for the Nationals. Harper, the No. 1 pick in the 2010 draft, is 2 for 9 since being recalled from the minors on Saturday.
Cahill (2-2) allowed one run and six hits in 7 1-3 innings, striking out five and walking one. Arizona starters are 4-0 with a 1.30 ERA over the past five games.
"We kind of build on one another," Cahill said. "Hitters say hitting's contagious. Maybe pitching's contagious, too. ... After the first month you kind of get into a groove, and when everyone's throwing like they are, you kind of build off one another. So it helps out a lot."
Signed as a free agent during the offseason, Cahill lowered his ERA to 3.13 with a 94-pitch gem.
"I think I made more quality pitches than any other start," he said. "I felt good. It's just too bad I couldn't continue and get deeper in the game."
Manager Kirk Gibson said, "It's the best he's thrown for us."
After Ian Desmond hit an RBI single, Bryan Shaw got the last two outs in the eighth and David Hernandez worked a perfect ninth.
Justin Upton had two hits and two RBIs, and John McDonald and Miguel Montero each had two hits and an RBI for the Diamondbacks.
Washington has scored only seven runs during its five-game skid. The Nationals were mired in a run of 17 straight scoreless innings before the eighth and went 1 for 7 with runners in scoring position.
After letting out an audible sigh, Washington manager Davey Johnson said, "I feel like we've got the hitters that can hit. Not as aggressive as I'd like to see. We're not getting a good strike and driving it. I know that talent is there. ... It's going to put a strain on the pitching staff if we don't start scoring some runs."
Jordan Zimmermann (1-2) gave up four runs, three earned, in 6 1-3 innings. In four of his five starts, Washington has scored one run or fewer while he was on the mound.
"I can't really speak for the offense," the right-hander said. "I just have to go out there and pitch the way I can pitch."
Harper received enthusiastic applause from the crowd of 22,675 when he stepped to the plate for the first time in the second inning. Teammate Stephen Strasburg drew 40,315 fans to the park for his debut in 2010, but that was also his first major league game.
Harper struck out on four pitches in his first trip to the plate, missing badly on his three swings, but the crowd cheered again as the 19-year-old walked back to the dugout.
In this next at-bat, Harper grounded out on a 3-2 pitch in the fifth. He also grounded out in the seventh.
Harper did, however, play well in left field. After Jason Kubel led off the second with a double, Harper fielded a single and threw a no-hopper to the infield to keep Kubel at third. One inning later, Harper sprinted to the line to make a fine catch of an opposite-field liner hit by Gerardo Parra .
Even better, Harper threw a 300-foot, no-bounce dart from left field to the plate on a sacrifice fly in the seventh inning and barely missed getting the runner.
"I just thought I had a shot," Harper said. "Reared back and gave it my all. That's what I try to do, make plays like that."
Gibson, a former outfielder, said, ""It kind of surprised me. We knew he had a solid arm, but it was a pretty impressive throw."
Arizona got runners at the corners with one out in the second inning before Zimmermann struck out Cody Ransom and retired McDonald on a twisting liner to right field.
The next time the Diamondbacks got a runner in scoring position, they didn't waste the opportunity. Paul Goldschmidt reached second on a throwing error by Desmond from shortstop and McDonald delivered an RBI single to left.
Arizona made it 2-0 in the sixth. Upton singled and stole second before Montero hit a two-out, run-scoring double.
Limited to a pair of hits through five innings, the Nationals began the sixth with singles by Desmond and Steve Lombardozzi . But Rick Ankiel hit into a double play and Adam LaRoche bounced out meekly to second.
Zimmermann left after two singles and an intentional walk loaded the bases in the seventh. Ryan Mattheus then hit Aaron Hill with a pitch and yielded a sacrifice fly to Upton.
Upton singled in a run in the ninth.
NOTES: Kubel, who was sidelined by an illness Monday, returned to go 1 for 4. He has hit safely in 12 of 13 games. ... Nationals manager Davey Johnson said 3B Ryan Zimmerman (shoulder) began throwing Tuesday, will begin to hit this weekend and could be ready to come off the disabled list on Sunday. ... Hill has reached base in 18 straight games.