The victory snapped a five-game Pirates losing streak and a two-game winning skein for the Mets.
"We played well here," Mets manager Jerry Manuel said. "That guy was pretty good that we faced today. He's a pretty good pitcher, he pitched well against us and Johan pitched a good game. You'd like to keep it going, but we're going home and we've still got a chance to put some stuff together, if we can continue to play good baseball."
Pirates left fielder Jose Tabata's solo home run in the bottom of the sixth inning -- his third of the season -- was the difference, putting the Bucs on top.
Duke made the slim lead stand up, tossing seven innings and allowing one run on five hits. He got the win, snapping a personal three-game losing skid and upping his record to 6-12.
"I really felt from the first inning on my location was good with all my pitches and I was able to mix them up," Duke offered. "The fact that I was able to bounce back after the run in the first inning really got the momentum in our favor. Then those two home runs were just huge for us. Thankfully we were able to get the win that we needed."
Duke was really sharp after a shaky first inning.
"You've got to tip your hat to Zach, he did a good job keeping us off balance today," Mets outfielder Jeff Francoeur stated. "He was mixing pitches, and he threw his curveball for strikes quite a bit today, which when I faced him in the past he had trouble doing, and he did a good job of that today."
The Pirates got a scoreless eighth inning from Evan Meek and a scoreless ninth inning from Joel Hanrahan to close out the game. Hanrahan notched his second save.
The long ball was Santana's undoing. He surrendered two runs, both via the home run, and four hits overall as he hurled his third consecutive complete game and took the loss, falling to 10-8 on the campaign. Santana recorded nine strikeouts.
"It's just another game," Santana observed. "Another one, a tough one. It seemed that everything was working out pretty good, and a couple mistakes, a couple pitches, changed the whole ballgame. But, you know, overall we look at it in a positive way: We won the series, and I think that's what we were looking for."
Santana, who has been plagued by lack of run support all season, doesn't get caught up in "what ifs."
"I'm not a stats guy," Santana explained. "The final numbers -- it is what it is, that's reality. What it is right now, that is what it is, it is as simple as that."
The lack of support is a source of concern with Santana's teammates.
"You hate to waste an effort by the ace of the staff," Francoeur lamented. "That's something that when we look back on this season, we'll probably see a lot of missed opportunities with him, with Johan. I think we've lost way too many games with him pitching."
The Mets scored first for the seventh consecutive game. Jose Reyes had a bunt single and advanced to second on a throwing error by Pirates catcher Ryan Doumit. After stealing third base, Reyes scampered home on a sacrifice fly by Carlos Beltran to give New York a 1-0 lead.
Reyes has now hit safely in 22 consecutive road games, tying the team record set by Keith Hernandez in 1987.
Santana was cruising until the bottom of the fifth inning, when the Pirates tied the game at 1 on a Lastings Milledge home run, his fourth of the season.
"They put a couple good swings on the ball," Santana said. "Two pitches that stayed in the middle of the plate. A couple changeups that didn't do what they were supposed to do, and it was just enough for them to win the ballgame."
The Mets finished the road swing with a 4-3 record.
"There is no room for error," Francoeur stated. "We gain a couple games on the Braves and Phillies, and we just gave one right back today."
George Von Benko is a contributor to MLB.com. This story was not subject to the approval of Major League Baseball or its clubs.