Rupp's 2-run double rallies Phillies past Rockies, 3-2.

DENVER -- The Philadelphia Phillies were running out of chances after having two runners cut down at home plate. Cameron Rupp made sure there wasn't a third time with a clutch hit against one of the best closers in the majors.

Rupp hit a two-run double in the ninth inning off Greg Holland, and Philadelphia rallied to beat the Rockies 3-2 on Sunday.

The unlikely comeback against a Rockies team that was 59-0 when leading after eight innings gave the Phillies a happy plane trip to Atlanta.

"It's nice to salvage a win out of this series, but it's even nicer to win on a getaway day with an off day the next day," Philadelphia manager Pete Mackanin said. "You have more time to savor it."

The Phillies appeared to be on the way to their sixth straight loss after shortstop threw out Rupp at home in the eighth and Odubel Herrera for the first out of the ninth. But Rupp drove the first pitch he saw from Holland (2-2) into the gap in left-center field, scoring Maikel Franco and Hyun Soo Kim.

"He hung a slider, left it out over the plate and I hit it into the gap," said Rupp, who finished with three hits. "I knew we tied the game and I was hoping Hyun Soo was going to score."

Edubray Ramos (1-7) pitched the eighth inning, Hector Neris got the last three outs for his 11th save and Franco homered for Philadelphia.

It was the second blown save in 36 chances for Holland. He felt confident he would close it out after Story threw out Herrera.

"We had a pretty good play at home and I'm one pitch from getting out of it and I rolled one in there," he said.

The Rockies were in line for their fifth straight win when they took a 2-1 lead in the seventh off starter Aaron Nola. The game was tied with two outs in the when pinch-hitter Raimel Tapia worked a walk off Nola. He stole second and scored on Charlie Blackmon's third double of the game on a 3-1 pitch.

Rupp said he thought the 0-1 pitch on which Tapia stole the base was a strike but home plate umpire Carlos Torres called it a ball.

"After I threw the ball and I looked at the scoreboard and saw it was 1-1, I said, `You called that a ball? How? It was right down the middle," Rupp said. "I guess when I came up to throw I blocked his vision. It changes the at-bat for sure but one pitch, you can't let that determine the game."

The Phillies nearly tied it off reliever Pat Neshek in the eighth, but Story threw out Rupp at home on pinch-hitter Andres Blanco's double into the left-field corner.

Nolan Arenado run-scoring single in the first gave Colorado a 1-0 lead and Franco tied it in the second with his 17th home run to left field.

Nola and Colorado starter Jeff Hoffman dueled deep into the game but didn't figure into the outcome. Hoffman allowed one run on four hits and struck out eight and was in line for the win until the Phillies' rally.

"It kind of sucks the game turned out the way that it did but I felt like I had all four pitches and I was commanding all four pitches pretty well," Hoffman said. "It just ended up that the guy on the other side had some good stuff also."

Nola allowed just two runs over seven innings. It was the ninth straight starts.

TRAINER'S ROOM

Phillies: C Andrew Knapp caught a bullpen session and should return to action soon. Knapp took a foul ball off his right hand in Thursday's loss to the Angels but did not go on the disabled list.

Rockies: 2B DJ LeMahieu was scratched from the lineup with a left triceps contusion suffered when he was hit by a pitch in Saturday's game. ... LHP Jake McGee (back) was activated from the 10-day disabled list and RHP Shane Carle to Triple-A Albuquerque. ... RHP Kyle Freeland (groin) played catch from about 75 feet Sunday morning. Freeland left Friday's game after throwing nine pitches and was placed on the 10-day DL on Saturday.

UP NEXT

Phillies: Philadelphia has not announced a starter for the opener of a three-game series in Atlanta on Tuesday.

Rockies: RHP German Marquez (9-4, 4.11) will face the Indians' Corey Kluber when Colorado opens a two-game interleague series at Cleveland on Tuesday.