Jorge Cantu tied it with a single off Lidge (0-8), who blew his major league-leading 11th save.
"It's incredibly frustrating," Lidge said. "I'm disappointed. They hit the ball tonight. I'm a little bit at a loss. I'm sure there's some things I can do better."
The Marlins moved within 4½ games of the wild card-leading Rockies, who lost to the Padres.
Lidge entered to start the ninth with a 6-5 lead and promptly gave up a double to Ross Gload, who advanced to third on Chris Coghlan's fly out. Lidge struck out pinch-hitter John Baker before walking Hanley Ramirez. Cantu then lined a single to left-center to score Gload and make it 6-all.
Carroll fell behind 0-2 before singling to center to score Ramirez.
"For us to keep crawling back after a rain delay and facing Madson and Lidge ... our guys just dug in the box and ground it out. It's special," Carroll said.
Phillies manager Charlie Manuel said the late-inning bullpen solution is simple: Lidge and Ryan Madson must do the job.
"Lidge and Madson, right now, that's what we've got in the back of our bullpen," Manuel said. "Lidge was our closer last year and we signed him to be our closer now. But he's struggled and it's hard for us to close a game out. It's tough."
Dan Meyer (3-1) pitched an inning of scoreless relief for the win in the soggy game.
A 45-minute delay in the middle of the eighth inning significantly thinned the announced crowd of 31,042. Florida has drawn more than that just seven times this season.
Ryan Howard doubled, homered and drove in four runs for the Phillies, whose magic number to clinch the NL East remained five.
Florida's 82nd win guaranteed the Marlins will finish with a winning record.
"Even if we don't qualify for the postseason, we had a great winning record this year," Cantu said. "We have been playing really great ball, and that's the bottom line."
The Phillies went ahead 6-3 in the seventh on Howard's two-run homer but pinch-hitter Gaby Sanchez homered off Cole Hamels in the bottom half and Cody Ross had a two-out RBI single in the eighth off Madson to make it 6-5.
Hamels gave up four runs and eight hits in seven innings. He struck out four and hit a batter.
Raul Ibanez's solo homer, his 33rd, tied it at 3 with one out in the sixth.
Florida took a 3-2 lead in the fifth.
Ross led off with his 24th home run. Ronny Paulino followed with a double to right-center and took third on starter Rick VandenHurk's sacrifice. Coghlan followed with a softly lined run-scoring single to left.
"Most of the time solo home runs don't beat you but those were mistake pitches [to Ross and Sanchez]," Hamels said. "I wish I could have them back. Cody's been able to hit my mistakes really well. Whenever I make a mistake it goes out of the yard."
Cantu's RBI single pulled Florida to 2-1 in the fourth.
Howard's two-out, two-run double in the third gave Philadelphia 2-0 lead.
VandenHurk allowed four runs and seven hits in six innings. He walked one, struck out five and hit two batters.
- Ibanez has hit six HRs in last 17 games after hitting one homer in the previous 34 games.
- Jimmy Rollins' third-inning double tied Bobby Abreu for fifth place (585) on the team's all-time extra-base hits list.
- Sanchez's home run was Florida's eighth by a pinch-hitter this season to tie the team record set in 1999.
- Marlins manager Fredi Gonzalez was ejected for arguing after pinch hitter John Baker was called out on strikes for the second out in the ninth. It was Gonzalez's fourth ejection of the season.
- Phillies catcher Carlos Ruiz was not with the team after being sent home to undergo an MRI on his sprained left wrist. Phillies GM Ruben Amaro Jr. said test results showed no structural damage to the wrist. Amaro added Ruiz will rejoin the team in Milwaukee for a series beginning Thursday and was expected to return to the field within three to five days.