Baltimore entered the rubber game of this three-game series with an American League-low 44 errors. But miscues by catcher Brook Fordyce, second baseman Brian Roberts and reliever Yorkis Perez fueled the decisive sixth inning.
Baltimore starter Sidney Ponson breezed through two innings before leaving with a blister on the middle finger of his pitching hand. The Phillies scored three times in the fourth inning to get within 4-3, then took the lead in the sixth.
Bobby Abreu started the inning with a walk against B.J. Ryan, the second of six relievers used by Orioles manager Mike Hargrove. Rick Bauer came out of the bullpen, but Abreu stole second and continued to third on Fordyce's throwing error.
Pinch-hitter Jason Michaels walked and Scott Rolen singled in the tying run before Hargrove turned to lefthander Yorkis Perez. He retired Travis Lee on a popout to shallow left-center field, but Mike Lieberthal walked and Marlon Anderson's one-hopper glanced off Roberts' glove as Michaels scored the go-ahead run.
Rolen scored when Perez misplayed Ricky Ledee's comebacker, giving Philadelphia a 6-4 lead.
Phillies starter Robert Person (3-4) overcame a career-high seven walks for his third win in four decisions this month. He allowed four runs and five hits while striking out five.
Jose Santiago was reached for one run and four hits in 2 1/3 innings, but Carlos Silva retired the only two batters he faced and Jose Mesa worked a hitless ninth for his 200th career save and 20th this season.