John Geliebter-USA TODAY Sports

Johan Rojas singled to center field with one out in the bottom of the 10th inning and the host Philadelphia Phillies clinched a playoff berth for the second consecutive season with a 3-2 win over the Pittsburgh Pirates on Tuesday.

Rojas had two hits and Brandon Marsh hit a solo home run for the Phillies (88-69).

"Once again, the word is incredible," Rojas said on a postgame interview on NBC Sports Philadelphia. "What a moment. What a year. It was a great team effort."

Phillies starter Aaron Nola pitched 6 2/3 innings and allowed four hits and one run with eight strikeouts and no walks.

Jeff Hoffman (5-2) earned the win.

Henry Davis hit a home run and single and Bryan Reynolds added a homer for the Pirates (74-83).

Pirates starter Mitch Keller gave up three hits and two runs with six strikeouts and two walks in six innings. David Bednar (3-3) took the loss.

Davis hit a solo home run in the eighth inning off Craig Kimbrel to tie the game, 2-2.

Jose Alvarado retired the side in order in the ninth.

The Pirates had runners on second and third with two outs in the 10th and Hoffman struck out Davis on a slider.

Liover Peguero singled to right with two outs in the third for the Pirates' first hit. It ended an 0-for-14 slump.

The Phillies went hitless through the first five innings though Bryce Harper walked twice.

Davis lined a single to left to open the sixth and Peguero hit into a 5-4-3 double play. Nola then struck out Ji-hwan Bae for his 200th of the season for the fifth time in his career.

Keller threw one pitch to Marsh to open the sixth but an apparent arm injury brought manager Derek Shelton and trainers to the mound.

Keller remained in the game and Marsh hit the next pitch over the fence in right center for a 1-0 lead, snapping an 0-for-17 skid. Harper added an RBI sacrifice fly to center for a 2-0 lead.

The Pirates closed within 2-1 in the seventh when Reynolds crushed his 24th homer of the season.

More must-reads:

TODAY'S BEST
Pacers ride historic shooting performance to Game 7 blowout of Knicks
Timberwolves mount incredible second-half comeback to stun Nuggets in Game 7
Xander Schauffele proves doubters wrong with historic win at 2024 PGA Championship
Four things we learned from Joey Logano's All-Star Race win at North Wilkesboro
Phil Foden lifts Manchester City to fourth consecutive English Premier League title
Watch: Aaron Judge blasts 13th home run in Yankees' seventh straight win
Canucks won't have linchpin forward for Game 7 vs. Oilers
Jags reportedly mulling extension for Trevor Lawrence, but is that the right choice?
Gordon Hayward calls role with Thunder 'frustrating'
Mets reliever Edwin Diaz showing short shelf life of closers
Three offseason moves the 49ers must make
Watch: NASCAR drivers exchange punches after crash in All-Star Race
Knicks star offers passionate defense of HC Tom Thibodeau after Game 7 loss
Knicks' Jalen Brunson suffers serious injury in Game 7 vs. Pacers
Dodgers add recently acquired left-hander to active roster
Report: 2023 No. 7 pick expected to terminate KHL contract, join Flyers
Mavericks advance to Western Conference Finals aided by controversial call late
Connor McDavid, Oilers hammer Canucks to force Game 7
Tyson Fury-Oleksandr Usyk epic increases excitement for potential rematch
Seize the Grey wins in muddy Preakness