Notre Dame (1-8) cut the lead to two on a 5-yard TD run by Travis Thomas. But after a pass interference call gave Notre Dame a second-chance at the 2-point conversion, defensive lineman Michael Walsh and linebacker Irv Spencer tackled Thomas well short of the end zone.
It was the first time Navy (5-4) beat Notre Dame since a 35-14 win in 1963 when Roger Staubach was quarterback for the Midshipmen. The Midshipmen celebrated the long-awaited victory at midfield, jumping on top of each other.
"Wow, what a game," Navy coach Paul Johnson said. "I'm so happy for our players. Now they will have that they are the class that broke the streak and they won't have to hear any more about it."
For Notre Dame, it was its school-record fifth straight home loss, another low point in a season of lows.
"We lost the game. The streak doesn't mean anything to me," Notre Dame coach Charlie Weis said.
The Irish, who could do little to slow Navy's offense, held the Midshipmen to three-and-out late in the fourth quarter with the score tied at 28. Greg Veteto had the first punt of the game, and Tom Zbikowski returned it 32 yards to the Navy 38.
The Irish drove to the 24, but on fourth-and-8 Weis decided to go for it rather than attempt a field goal. Chris Kuhar-Pitters, who earlier returned a fumble 16 yards for a touchdown, sacked Evan Sharpley with 45 seconds left.
It was the fourth sack for Navy, which entered the game with five.
Notre Dame, which hadn't scored more than 20 points all season, led 21-14 at halftime, the first halftime lead for the Irish all season.
The two teams traded touchdowns most of the day and had just traded missed field goals when Kuhar-Pitters came up with his big play early in the fourth quarter. Sharpley dropped back to pass and was wrapped up by nose guard Nate Frazier and defensive end Michael Walsh knocked the ball loose. Kuhar-Pitters scooped up the loose ball and rumbled into the end zone.
Kaheaku-Enhada scored the 2-point conversion to give the Midshipmen a 28-21 lead.
The Irish responded, though, with a touchdown of their own as Thomas went in from 3 yards out with 3:25 remaining to tie it.
Robert Hughes, whose brother Tony was fatally shot on Tuesday, scored Notre Dame's first touchdown on a 3-yard run. Irish players, some of whom attended the funeral Friday, swarmed Hughes. He ran over to the sideline and got a hug from Weis.
Before the game, a moment of silence was held for Hughes' brother and the death of Ryan Shay, a former Notre Dame runner who died Saturday during the U.S. men's marathon Olympic trials.