Hunter Pence was ruled out on fan interference in the sixth inning after initially being awarded a double, and the ruling change may have cost the Phillies two runs. They played the game under protest.
The lead changed hands four times, and Florida came from behind for the second game in a row to take the series.
The Marlins had a hit in all but two innings, but they stranded a franchise-record 23 runners and went 3 for 19 with runners in scoring position. They loaded the bases against David Herndon (1-3) with one out in both the 12th and 13th inning but failed to score, then benefited from his wildness in the 14th.
Emilio Bonifacio led off the inning with a walk and advanced on a sacrifice. After Greg Dobbs was intentionally walked, Gaby Sanchez lined out. Logan Morrison also received an intentional walk - the fifth issued to the Marlins in the final four innings - before Cameron walked on a 3-1 pitch.
Herndon gave up three home runs in one inning when the Phillies blew a late lead Saturday.
The Phillies lost for only the seventh time in their past 29 games in Miami since September 2008. It was their final game at the stadium that has been the Marlins' home since their first game in 1993. Florida moves into a new ballpark next year.
Phils ace Roy Halladay went six innings and allowed nine hits and three runs. He gave up an unearned run when he committed his first error this season by dropping a throw covering first.
Florida's Anibal Sanchez also went six innings and allowed two runs, both unearned because of an error on third baseman Dobbs. Plagued by poor run support, Sanchez has won only once in his past 15 starts.
Halladay was in line for his 18th victory when the Phils scored twice in the seventh to take a 4-3 lead. Shane Victorino and Michael Martinez walked, and Ryan Howard hit a two-out, two-run single.
Florida pulled even in the bottom of the seventh on Gaby Sanchez's RBI groundout. Michael Schwimer walked three in the inning but struck out John Buck to end it.
Clay Hensley (3-6) pitched two perfect innings.
Philadelphia went 2 for 12 with runners in scoring position and stranded 11. Chase Utley went 0 for 7 and finished 4 for 33 on the Phillies' trip. Hunter Pence went 0 for 6.
The video review occurred with the score 2-all and a runner at first in the sixth. Pence was ruled out when a spectator wearing a Phillies jersey leaned over the outfield railing and tried to catch the ball with his Phillies cap. Marlins right fielder Bryan Petersen tried to make the catch, but his glove brushed the fan's cap, and the ball deflected to the warning track for an apparent double that put runners at first and third with none out.
Both managers complained. The Phils' Charlie Manuel wanted the play ruled a home run, and the Marlins' Jack McKeon wanted Pence called out. Following a video review, the umpires ruled Pence out.
Manuel argued and was ejected. Raul Ibanez followed with a double, but the Phils didn't score in the inning.
The fan was Alex Dicandio, a college student in Tampa. His take on the ruling?
"It should have been a home run," he said.
NOTES: Marlins RF Mike Stanton (right hamstring tightness) was held out of the starting lineup. His status is day to day. ... Phillies LHP Cliff Lee, who is scheduled to start Monday against Atlanta, is 1-3 with a 4.98 ERA in six career starts versus the Braves. ... A spectator near first base was hit in the head when the barrel of Bonifacio's broken bat sailed into the stands. She received treatment at her seat for several minutes, then walked out of the stadium with assistance. ... The Phils fell to 6-8 in extra-inning games.