HOUSTON -- With the big game that Jose Reyes had, it was fitting that he helped end it.
Reyes stole third base twice after the ninth inning, hit his eighth triple, which is tied for most in the National League, and drew a key walk in the victory.
"It was a real good night and it's even better when you get a win," Reyes said. "I'll trade four hits anytime for a win. So that was a real good game for us."
After Geoff Blum hit a tying home run for the Astros in the ninth, the Mets went ahead without a hit.
"He's just trying to push the envelope and he's one of the best at that," Mets manager Jerry Manuel said of Reyes. "He was on five or six times and only scored one run. Wow, that's hard to believe. But he had a good night, played good defense for us, got on base, got some hits for us and did some things. He's playing extremely well."
Davis, who grounded into a bases-loaded forceout in the 10th and singled in the 13th, lifted a fly to right field that put the Mets ahead.
Davis ended a prolonged drought with an earlier single.
"That two-strike hit got a little confidence back and then I popped it up to get the runner in to get the win," he said. "[I'll] just go into tomorrow's game with a little momentum."
Mets star third baseman David Wright singled with two outs in the 12th inning. He was replaced by a pinch-runner after talking to a trainer for a minute and slowly walked off the field.
Wright said he was vomiting from about the fifth inning on and that he became too lightheaded to stay in the game after that hit. He wasn't feeling much better after the game and a bottle of Pedialyte, a children's hydration drink, sat in his locker.
Mets starter R.A. Dickey pitched a one-hit shutout against Philadelphia in his previous outing, and the knuckleballer took a 2-1 lead into the ninth. With one out, Blum hit his first home run since Sept. 16.
It was the longest game of the season for the Astros. The Mets had played on far longer, going 20 innings in a 2-1 win over the Cardinals in April.
"Well, we were kind of we were done," Astros manager Brad Mills said. "We were done with position players and pitchers [in the 13th]. We were done, we were all out of everything. We [didn't bunt] and tried to press the issue a little bit because of that, because of where we were out [of players].
Jason Bourgeois singled with no outs in the 13th for Houston's first hit since the ninth, but he was caught stealing. Angel Sanchez singled with two outs, but Dessens retired Hunter Pence to send it to the 14th.
Reyes singled in the 10th off Brandon Lyon and moved up on a bunt single by Angel Pagan. The Astros intentionally walked Beltran with one out after a double steal by Reyes and Pagan to load the bases.
Davis grounded into a force out that left Reyes out at home before Pence caught a fly ball by Jeff Francoeur for the third out.
Rookie Ruben Tejada doubled with one out in the seventh inning to break an 0-for-28 hitting slump. That drought was the longest by a Mets position player since Jason Phillips went 0-for-29 in April 2004.
Dickey followed with his first career double to send Tejada home and make it 1-0. Reyes singled before Dickey scored on a groundout by Pagan to push the score to 2-0.
Sanchez got Houston within 2-1 with an RBI single with one out in the eighth inning. Humberto Quintero and Jason Michaels both singled before a sacrifice bunt by Michael Bourn set up that score. Dickey struck out Pence before Carlos Lee grounded out to limit the damage.
Astros starter Brett Myers and Dickey dueled through six scoreless innings.
Myers pitched seven innings. He has lasted at least six innings in each of his 25 starts, extending his franchise record to start a season.
The Astros placed reliever Matt Lindstrom on the 15-day disabled list retroactive to Monday with a lower back strain and recalled LHP Fernando Abad from Triple-A Round Rock after the game. ... 37-year-old 2B Blum got a loud round of applause when he made a dive and landed in a belly-flop to grab a line drive by Tejada in the ninth.