Philadelphia snapped a five-game losing streak, while Volstad (3-6) dropped his fourth consecutive decision.
"For Vollie, it's going to go down as four losses in a row, but for me, he could have won this game," Marlins manager Fredi Gonzalez said. "The positive side is he gave us 6 1/3, and he really could have gotten out of that [seventh] inning cleanly."
The Marlins have now lost three in a row, and their record fell to 24-25. It's the first time they've been below .500 since they were 17-18 on May 13.
Still, they had a chance in the ninth off Jose Contreras.
Back-to-back one-out singles from Jorge Cantu and Dan Uggla put runners on first and second. Brian Barden pinch-ran for Cantu. But Contreras struck out Cody Ross looking. The hope for a third walk-off win this season was thwarted when Ronny Paulino lifted a fly ball to center field.
Shane Victorino, who scored the decisive run in the seventh, clutched the final out.
"We had some people on base with the right guys at the plate," Gonzalez said. "We didn't get the knocks."
The hustle of Victorino, coupled with a double steal, positioned the Phillies to grab the lead in the seventh inning.
Proving costly was a leadoff walk to pinch-hitter Ben Francisco. The pivotal at-bat was Victorino's sharp grounder to first. The Marlins were hopeful of turning a double play, but were only able to force Francisco out at second.
Gaby Sanchez fielded the ball cleanly and threw to second. Hanley Ramirez made a swift throw back to Sanchez at first. But on a bang-bang play, first-base umpire Mike DiMuro called Victorino safe.
"That's a tough play for an umpire to make; it was bang-bang," Sanchez said. "It's his call. It's tough. We can't really dwell on the call. We have to come back and do something to get out of it. They were able to get a run. It definitely didn't kill us. It made it a 3-2 ballgame, and we just weren't able to get another run."
From a fielding standpoint, the Marlins turned the play quickly. The speed of Victorino, however, was the difference.
"Shane is a fast guy running down the line," Sanchez said. "He hit it pretty hard, too. I threw it hard to Hanley. It looked like he threw it hard back to me. In an instance like that, the way the play was being made, I thought we had him. We can't do anything about it."
Wilson Valdez singled to right, ending Volstad's night at 115 pitches. Victorino and Valdez executed a double steal off reliever Taylor Tankersley, and all Utley needed was a ground ball, which he delivered.
"I feel like I threw well against a good hitting team," Volstad said. "They had been on that cold streak. I wanted to continue pounding the zone and attacking them and making some good pitches. It just didn't turn out the way I wanted it to in the end."
Walking Francisco to open the inning was something that haunted Volstad.
"That leadoff walk was huge," Volstad said. "Even though I got that ground ball from the next hitter, it was a close play at first. But putting that leadoff guy on is something you definitely don't want to do in a tie game, late in the game -- especially a pinch-hitter, too."
In his four-game slide, Volstad managed to keep his team in the game each outing. In the stretch, he's allowed 12 earned runs in 23 1/3 innings.
The Marlins had taken a two-run lead in the third inning. A two-out error by Kendrick on a routine play produced the runs. Chris Coghlan's single started the rally. He went to third on Sanchez's single to right. Ramirez tapped a slow grounder to the mound. Kendrick, with plenty of time, made a wild toss to first base, allowing the runs to score.
For the third consecutive day, the Marlins endured a weather-related delay. The start was held up 26 minutes because of rain.
After being shut out in three consecutive games, the Phillies came into Florida not having scored in 27 straight innings. They also had one run over a 47-inning span.
The Phillies snapped their drought at 30 innings when they pushed across a run in the fourth. The Marlins shifted against Ryan Howard, who simply slapped the ball to left field for a single. Raul Ibanez laced a triple, scoring Howard, which marked Philadelphia's first run since the ninth inning on Sunday.
"It's definitely just nice to get a win tonight," Kendrick said. "I think that's what we needed. No matter what happened, as long as we won tonight, it was nice. So I'm happy with that."