Abreu's solo homer in the first inning was his 10th in May and extended his hitting streak to 10 games. Abreu drove in two runs and has RBI in nine straight games. He's also scored a run in nine straight games.
"What he's doing right now is amazing," Phillies manager Charlie Manuel said.
Lidle (3-3) allowed four runs -- just one earned -- and six hits in six innings. Ryan Madson pitched two scoreless innings, and Billy Wagner finished for his 10th save in 11 chances, giving up David Eckstein's first homer since Sept. 26.
Third baseman David Bell made three errors, shortstop Jimmy Rollins had two and the Phillies allowed three unearned runs. Philadelphia had committed the fewest errors in the National League (15) coming in, though Bell had five. It was the Phillies' first five-error game since July 15, 2002.
"That's kind of how it goes sometimes," Manuel said. "We're very fortunate Cory pitched over our mistakes."
Jeff Suppan (3-4) allowed seven runs -- five earned -- and seven hits in three-plus innings for the Cardinals, who lost for the third time in nine games.
"It wasn't a good night for me," Suppan said. "I put the team in a big hole."
The last-place Phillies have won three of four and opened a critical 12-game stretch with games against three first-place teams (St. Louis, Baltimore and Atlanta), and one second-place club (Florida).
Philadelphia could get first baseman Jim Thome back in time for this weekend's series at Baltimore. Thome, on the disabled list since May 3 with a strained lower back, will head to Florida for two days of extended spring training and could be activated Friday.
Abreu and Pat Burrell hit back-to-back homers off Suppan in the first inning, and the Phillies scored five more runs in the second.
Ryan Howard led off the second with an opposite-field homer to left for a 3-1 lead, then the Phillies loaded the bases on two hits and a walk. Endy Chavez hit a grounder that scooted under shortstop Eckstein's legs for a 5-1 lead, Abreu added a sacrifice fly and Chavez scored on a wild pitch.
"The ball stayed down. I don't think it was a double play ball," Cardinals manager Tony La Russa said. "Errors are part of the game."
The Phillies chased Suppan after he allowed a leadoff single in the fourth.
Bell's third error of the game in the fourth -- he couldn't handle a grounder that took a high bounce -- could have ended the inning if handled cleanly. Instead, two runners were on and Albert Pujols hit a two-run double off the top of the left-field wall to make it 7-4.
"If I let up and I let some of those errors get to me, it might have been a different ballgame," Lidle said. "They're a team that can come back and score a lot of runs quick. I just battled through and it's a good thing we scored a lot of runs."
Bell couldn't come up with the ball on a backhanded stop in the first inning and he made a throwing error in the second. It was Bell's first career three-error game.
"For whatever reason, after I made an error I was tentative, and I learned a long time ago not to play like that" Bell said. "Tonight was a bad night, but we won the game and that's all that matters."
The defense settled down after the fourth, and Lidle retired his final seven batters before he was lifted for a pinch hitter in the sixth.
- Thome will play in Clearwater, Fla., on Wednesday and Thursday.
- CF Kenny Lofton, on the DL with a strained right hamstring, also is close to making a return to the lineup, possibly as early as Wednesday.
- C Mike Lieberthal returned to the starting lineup after missing three games with an injury to his right ring finger. Lieberthal singled in the second for his 1,000th career hit and got the two at-bats needed for next year's $7.5 million option to kick in.
- NASCAR star Carl Edwards participated in a skit with the Phillie Phanatic.