"We'll take 'em any way we can get 'em," manager Charlie Manuel said. "A run's a run."
The Phillies took advantage of seven early walks by Perez and avoided starting 1-7 for the first time since 1987. Still looking for their big bats to bust out, they drew 11 free passes in all but stranded 14 runners.
Philadelphia batters began the night leading the major leagues with 40 walks.
"We haven't gotten a lot of our big boys hot. When everybody gets comfortable it's all going to come together like clockwork," third baseman Wes Helms said. "The big knocks will come."
Eaton (1-1) allowed four hits and three walks in his first win with the Phillies, who drafted him 11th overall in 1996. Signed to a $24.5 million, three-year contract in the offseason, he was tagged for eight runs -- seven earned -- and seven hits over 4 2/3 innings during his first outing of the year, against Atlanta.
The right-hander struck out five and has always enjoyed facing the Mets. He improved to 4-0 with a 1.67 ERA in four career starts against New York.
"For whatever reason, I've pitched pretty well here. I don't know what it is," Eaton said. "I kind of feed off the crowd a little bit. They're a little more antagonistic."
A lack of control was one of the reasons Perez was shipped out of Pittsburgh last year, and he couldn't find the plate again Wednesday.
"It's not like before," Perez said. "Before, I got nervous."
Perez (1-1) walked the bases loaded in the second inning before retiring Eaton to avoid any damage. But the erratic left-hander wasn't as fortunate in the third. After getting two quick outs, he gave up a single to Chase Utley and walked four straight. Perez then plunked Rod Barajas with a 2-2 pitch, making it 3-0.
"We've been playing in the cold weather all year. I don't see that as an excuse," Mets manager Willie Randolph said. "It's obviously a mechanical thing."
That was all for Perez, who matched his career high for walks and threw only 32 strikes in 73 pitches. It was a strikingly sudden loss of command. He did not walk a batter in his first start, when he pitched seven strong innings to beat Atlanta 11-1. And he walked just seven in 25 2/3 innings in spring training.
"When he had two outs there, I assumed he was going to continue to pitch well. He just lost his rhythm," Randolph said.
New York loaded the bases with none out in the fourth, but managed only one run on Moises Alou's double-play grounder. Utley made a tough play at second on Alou's hard smash and did well to turn it into two outs.
"Outstanding. Real big play in the game," Manuel said. "It just goes to show you we can play fundamentally sound."
Jose Reyes' RBI single cut it to 3-2 in the fifth, but Reyes was caught stealing on a pitchout.
Aaron Rowand's two-out RBI double in the seventh made it 5-2.
"Tonight was a perfectly played baseball game. We capitalized on their mistakes," Helms said.
- It was the sixth time Perez has walked seven batters. The last time was June 23 last season with Pittsburgh at Dodger Stadium.
- Mets 3B David Wright extended his hitting streak to a career-best 20 games with a single in the ninth.
- The last time New York pitchers walked at least 11 was against the Chicago Cubs on March 31, 2003, when they issued a franchise-record 12 free passes.
- Reyes leads the Mets with nine RBI, from the leadoff spot.
- Ryan Howard had homered in five straight games against the Mets, including four in a row at Shea Stadium.