PHILADELPHIA -- Scott Olsen threw his changeup for strikes, kept runners out of scoring position and looked smooth and relaxed pitching at a notorious hitters park.
All of those parts could have normally helped add up to a win. Pitching against the Phillies in their home park was the final piece needed to all but guarantee one.
Olsen allowed one earned run in 6 2/3 stellar innings, Dan Uggla stole home and the Florida Marlins extended Philadelphia's home-field misery with a 4-3 win Friday night.
Olsen (1-1) was sharp and efficient in his second start of the season as seven of the eight hits he allowed were singles. He walked two and struck out only one, but threw 52 of his 82 pitches for strikes to help the Marlins win their first one-run game of the season (1-5).
"This is the best I felt this year, by far," Olsen said. "I thought I controlled all my pitches the best I have all year, counting spring training."
Playing at Citizens Bank Park seems to be quite the tonic for slumping visitors this season. The Phillies have left everyone baffled with their home play, losing for the eighth time in 10 games. The Nationals won two of three from the Phillies here this week.
"The fact we're losing games is weighing on them more than the fact we're losing at home," Phillies manager Charlie Manuel said.
The 22-year-old Olsen didn't allow a runner past second base or an extra-base hit until the seventh when Ryan Howard's double put runners on second and third. Sal Fasano's RBI groundout made it 4-1. The left-hander was pulled for Matt Herges after getting the second out, leaving Howard at third.
Howard scored when Miguel Cabrera mishandled a grounder for an error, making it 4-2.
Herges allowed an RBI groundout in the eighth. Joe Borowski worked the ninth for his second save for the Marlins, who won for the second time in the last six games.
"If I can keep my walks down to a minimum, I'll have success," Olsen said. "I just stayed low in the zone. That's definitely one of the big things here."
Jon Lieber (0-4) is hardly getting the results like last year when he went 17-13 with a 4.20 ERA in his first season in Philadelphia. He easily tossed his best game of the season on Friday, striking out eight, walking none and giving up six hits in seven innings.
"Right now, I suck. Bottom line," Lieber said. "I'm not getting the job done and I'm going to leave it at that. I'm going to keep trying and I put all these losses on me."
Lieber, who started 4-0 last season, did go deep into the game, giving a needed boost to a bullpen that went through four relievers a night earlier in a blowout loss to Washington.
Lieber was sharp early, retiring the first 13 batters before allowing Mike Jacobs' one-out double in the fifth. Two batters later, Reggie Abercrombie doubled to left for a 1-0 lead and Matt Treanor followed with an RBI single to center.
"Our guy threw well, their guy threw well and we were able to get to him a little bit," Jacobs said.
The Marlins got to Lieber again in the sixth when Uggla singled and moved to third on Miguel Cabrera's single to open the inning. Uggla stole home on a double steal, and Jacobs delivered a two-out RBI single for a 4-0 lead.
It was Uggla's first career stolen base.
"We're youthful and we need to put pressure on the other teams," Marlins manager Joe Girardi said.
Olsen swiftly worked out of his first jam of the game in the sixth. With runners on first and second and no outs, he got Pat Burrell to foul out. Olsen then bounced a 1-0 pitch off Treanor that scooted away from the catcher before he threw out Alex Gonzalez trying to advance to third. Chase Utley grounded out to end the rally and the sparse crowd booed.
"We make mistakes and we can't overcome them," Manuel said. "We couldn't get the big hit when we needed it."
Aaron Rowand stole second in the first inning, but was thrown out on his attempt in the third. ... Sal delivers: Fasano sent 20 free pizzas to Sal's Pals, a group of about 20 fans in the right-field upper deck seats that come decked out in the long hair and shaggy mustache like the catcher. Fasano went 2-for-3 with an RBI, giving his faithful followers plenty of reason to cheer. ... Juan Pierre was the last Marlin to steal home on July 23, 2004, at Montreal. ... Girardi will have LHP Jason Vargas start Sunday and he pushed RHP Brian Moehler back a day and he will start Monday against the Cubs.