The victory enabled Navy, which also beat Air Force, to claim its first Commander in Chief's Trophy since 1981.
The Midshipmen, who will face a Big 12 Conference team in the Houston Bowl on Dec. 20, finished the regular season 8-4.
Army (0-13) became the first team in NCAA history to lose 13 games in one season.
Quarterback Craig Candeto, who scored six touchdowns against Army last season, rushed for 58 yards on 18 carries to join Eckel over the 1,000-yard mark. It is the first time Navy has had two 1,000-yard rushers in the same season.
Eric Roberts' two-yard TD run, his second of the game, gave Navy a 20-6 lead in the third period. Eckel tacked on TD runs of 16 and 12 yards in the fourth.