Keenan Reynolds had just absorbed another agonizing loss to Notre Dame, and the frustration in his voice was evident.

For the second year in a row, Navy scored plenty of points and amassed chunks of yardage against the Fighting Irish.

Again, it wasn't enough.

Navy erased a 21-point deficit and had more yards against Notre Dame since 1972, but the sixth-ranked Irish pulled out a 49-39 victory Saturday night.

The game was eerily similar to last year's, when Notre Dame prevailed 38-34.

"It's disappointing," Reynolds said. "I'm tired of being almost close to beating Notre Dame. We just didn't make enough plays. We have to point the finger at ourselves."

Navy (4-5) scored five touchdowns and finished with 454 yards, including 336 on the ground.

But Notre Dame (7-1, No. 10 CFP) survived.

"We had a chance to win the game. We just didn't do what it takes to win," Reynolds said. "Against the No. 10 team in the country, you have to play perfect and we certainly didn't do that. As a result, we didn't win."

Everett Golson became the first player in Notre Dame history to throw for three touchdowns and run for three scores. The Irish needed that kind of performance to win, because their defense had no answer for Navy's triple option.

"It ended up being a game where we outscored them," coach Brian Kelly said.

After Notre Dame ended its first four possessions with touchdowns, the Midshipmen tallied 24 straight points to move ahead 31-28 with 4 minutes left in the third quarter.

"It's a long game," Reynolds said. "You see time and time again, teams fighting back from 20-something points down. It's just one play at a time. Just keep fighting."

Golson put Notre Dame back in front with a 3-yard burst into the end zone, and a 25-yard touchdown run by Tarean Folston made it 42-31 with 12:22 remaining.

No, it wasn't over yet.

Two missed field goals by the Irish kept Navy's hopes alive. The Midshipmen took advantage by scoring a touchdown and 2-point conversion to close to 42-39 with 4:18 remaining, but the onside kick failed and Golson wrapped it up with an 8-yard TD run with 1:27 to go.

The Irish have won four straight in college football's longest continuous intersectional rivalry and now lead the series 75-12-1.

"I challenge anyone to put these guys on their schedule," Kelly said, "anybody that thinks Navy is an easy team to play. It's very difficult."

Off last week, Notre Dame had two weeks to agonize over a 31-27 loss at Florida State. Needing a victory to stay relevant in the college football playoff, the Irish averaged nearly 10 yards on their 35 plays during the opening 30 minutes and finished with 533 yards.

The defense wasn't nearly as impressive. Navy ran for 336 yards — most against Notre Dame this season — and the Irish have now yielded a total of 113 points in their last three games.

Golson, however, was virtually unstoppable. He completed 18 for 25 passes for 315 yards and ran for 33 yards on nine carries to help Notre Dame to its highest point total of the season.

Just like last year, when Notre Dame allowed 419 yards, the Irish counted on their offense to compensate for a defense that had all sorts of trouble.

After cutting a 21-point deficit to 28-17 at halftime, Navy took the second-half kickoff and held the ball for 7 1/2 minutes before Geoffrey Whiteside scored on a 13-yard run.

The Midshipmen then forced Notre Dame into its first punt in this series since 2012. Mids coach Ken Niumatalolo kept his offense on the field for a fourth-and-2 from the Navy 42, and Noah Copeland justified the decision with a 54-yard run around left end to set up a 4-yard touchdown by Chris Swain for a 31-28 lead.

Golson's 3-yard TD run put the Irish back in front, and Navy tried to keep pace by pulling out a trick play on a third-and-7 from its own 39. Quarterback Keenan Reynolds pitched the ball to Copeland, who passed it to a wide-open Reynolds. But the ball went through Reynold's hands, and the Midshipmen had to punt.

After Golson hit Chris Brown for a 42-yard gain, Folston scored for an 11-point cushion.

At that point, many in the crowd of 36,807 at the home stadium of the Washington Redskins began heading to the exits.

They should have known Navy had something left, just as it did in the first half after falling behind 28-7.

Navy closed to 28-14 with an 18-yard touchdown run by Desmond Brown. Then, after an interception by George Jamison at the Navy 14, Austin Grebe kicked a 44-yard field goal as the half ended.