Navy had a chance to score late in the fourth quarter, but a bad pitch by Keenan Reynolds led to a 10-yard loss. Then on fourth-and-4 from the Notre Dame 31, Notre Dame linebacker Jaylon Smith stopped an end-around by Shawn Lynch for no gain as the Irish avoided losing to Navy for the third time in the past five seasons.
Tommy Rees threw touchdown passes to TJ Jones and Ben Koyack, George Atkinson III scored on a 41-yard run and Cam McDaniel added a TD.
Reynolds rushed for three touchdowns for Navy (4-4) and passed for another.
Notre Dame (7-2) improved to 11-1 in November in four seasons under Brian Kelly and clinched its fourth consecutive winning season, the first time that's happened since 1995-98. The Irish also keep alive their hopes for a BCS bowl berth. Navy lost for the third time in the past four games.
The final stop was one of the few times the Irish were able to do much to even slow Navy, which punted only twice and played a near flawless game as they had no turnovers and no penalties.
Folston rushed for 144 yards on 18 carries, with 116 yards in the second half. He had rushed for only 116 yards before Saturday. Rees was 12-of-20 passing for 242 yards with two interceptions. It was the third time this season Rees has thrown at least two interceptions. The Irish lost the other two against Michigan and against Oklahoma, when Rees threw three.
Reynolds completed six of nine passes for 88 yards, including two key passes that gave Navy its final lead. First he threw an 18-yard pass to Marcus Thomas to the Notre Dame 49. After three running plays, Reynolds then found a wide open Matt Aiken for a 34-yard score.
Folston came up big for the Irish on the final drive, rushing for 51 yards on 10 carries before plunging in for the go-ahead score.
Chris Swain led Navy with 85 yards Quinton Singleton had 77 yards. Navy gashed Notre Dame for 207 yards in the first half, which was more than it had in full games against the Irish the previous two seasons. In fact the Middies were on pace to top their best rushing game ever against the Irish, but couldn't keep it up in the second half.
Mistakes and penalties against Notre Dame allowed Navy to not only stay in the game, but lead 20-17 at halftime. A personal foul against defensive linemen Stephon Tuitt helped set up Navy's first score to tie the game at 7-7 on a 2-yard run up the middle by Reynolds.
Notre Dame appeared to take a 17-7 lead on a 16-yard TD run by Cam McDaniel, but the Irish were called for two holding penalties. Two plays later, receiver Jones fell and the pass by Rees was intercepted by safety Parrish Gaines at the 11.
Reynolds had a 15-yard run on a third-and-3 play to keep the drive alive as Navy drove 77 yards on 10 plays to go ahead 14-10. The Irish responded quickly with a four-play scoring drive, with Rees throwing a 36-yard TD pass to Jones, who caught the ball at the 6 and ran in for the touchdown.
Notre Dame appeared to stop Navy a yard shy of a first down when safety Matthias Farley knocked Reynolds out of bounds at the Navy 34-yard line. But defensive lineman Justin Utupo was called for unnecessary roughness to keep the drive alive.
Before the game, the Blue Angles flew over Notre Dame Stadium twice. The Navy's daredevil fighter jet pilots are scheduled to return to performing at air shows in 2014 after this year's performances were canceled this spring because of budget cuts.