The Cardinals, who allowed six runs in the ninth inning, fell two games back of the wild card-leading Braves and five behind NL Central-leading Milwaukee with six games to go. Atlanta and Milwaukee were idle Thursday.
"I guess those guys over there [the Braves] are pretty excited about it," Harris said. "But we come here to win no matter what the situation is, and fortunately we were able to come through and get that win today."
St. Louis has three games at home this weekend against the Cubs before finishing the season with three in Houston.
In a contest that was delayed 2-hours, 19-minutes at the start by rain and holding a 6-2 lead in the ninth, the Cardinals sent Jason Motte to the mound to close out the game. Harris walked, Nick Evans reached first on Rafael Furcal's fielding error and pinch-hitter Jason Pridie walked to load the bases with one out. Pinch-hitter Justin Turner also walked to force in a run.
Marc Rzepczynski (0-3) came in from the bullpen and was greeted by Jose Reyes' broken bat RBI single over the head of second baseman Ryan Theriot. Fernando Salas took over on the mound to face Ruben Tejada, who hit a two-run double to left past a diving Shane Robinson. Angel Pagan was intentionally walked to load the bases again. After a David Wright strikeout, Harris stepped to the plate again and hit a two-run single to right for an 8-6 Mets lead.
"I think we're resting them where we can," Cardinals manager Tony La Russa said. "We have [Kyle] McClellan with two days off, he's ready tomorrow. When you screw up, it's not because you're vulnerable, sometimes. Just the other side beats you."
Bobby Parnell pitched a perfect home ninth to snap St. Louis' four-game winning streak, as the Mets avoided a three-game sweep.
Allen Craig's two-run homer in the first inning gave the Cardinals an early lead.
The Mets got one run back in the fifth. Josh Thole and Mike Baxter singled and Reyes walked to load the bases with two outs. Tejada also walked to force in a run.
St. Louis promptly responded with two runs in the home fifth to increase its margin. With two outs, Albert Pujols hit a solo homer to left. Lance Berkman, who signed a one-year contract earlier Thursday, David Freese and Yadier Molina hit three straight singles to plate another run for a 4-1 edge.
The Cardinals tacked on two more runs in the seventh to take a 6-1 lead. Josh Stinson gave up a one-out double to Freese, who scored on Molina's double. Daniel Herrera took over on the mound with a runner on third and two outs. Pinch-hitter Tyler Greene greeted him with an RBI single to left.
The Mets started their comeback with a run in the eighth. Octavio Dotel gave up a one-out single to Tejada, who went to second on center fielder Adron Chambers' fielding error. Tejada advanced to third on a wild pitch and crossed the plate on a passed ball to make it 6-2.
Manny Acosta (4-1) tossed a perfect eighth for the Mets to pick up the win.
The Mets and Cardinals split six games this season...New York was without outfielders Jason Bay (illness) and Lucas Duda (dizziness)...The Mets went 3-3 on their final road trip of the season. New York went 43-38 on the road this year...New York starter Chris Capuano gave up four runs on eight hits over 4 2/3 innings...Jake Westbrook allowed one run on three hits in a six-inning start for the Cardinals.