Army (9-3) earned its second straight win over Navy (6-6) following 14 straight losses in the series.
Ahmad Bradshaw pushed over the goal line on a quarterback sneak with 5:10 remaining and Blake Wilson kicked the extra point to put Army ahead.
Quarterback Malcolm Perry, who ran for 250 yards and a 68-yard score in the second quarter, then led Navy to the Army 31 with 3 seconds left.
Navy elected to try a field goal, and after about 10 players used their feet to clear the steady snow during a timeout, Moehring's kick was long enough but drifted barely left.
Army cut its deficit in the series to 60-51-7 in a matchup of bowl-bound teams. The Black Knights claimed the Commander-in-Chief's Trophy thanks to an earlier victory over Air Force.
In a game that included only three passes - Army completed its lone toss - the Black Knights produced a 13-play, 65-yard drive to take a late lead. John Trainor tiptoed the sideline for 8 yards one play before Bradshaw's 12th touchdown of the season.
Navy took advantage of the ensuing kickoff going out of bounds and moved down the field. Perry dropped a shotgun snap on fourth down at the Army 37, but picked up the ball and ran for a first down. But Navy committed two false start penalties, making the final field goal attempt more difficult.
Snow started falling in the late morning on the 29-degree day, leaving a coating on the field. Workers used blowers to uncover the lines and hashmarks during timeouts as a light snow fell throughout.
The teams, both of whom run the triple-option, combined to complete only 58 passes all season. The snow made both coaches want to throw it even less.
The first pass of the game came with under 9 minutes left in the second quarter. Army completed its only pass, a 20-yard wobbler from Bradshaw to Calen Holt, midway through the third quarter.
The weather made one of sports' biggest rivalries an even more physical contest. Army's all-white uniforms - a nod to the 10th Mountain Division of World War II - served as almost camouflage in the snow.
Perry was the star through three quarters. Getting the start at quarterback ahead of Zach Abey, his long touchdown run in the second quarter was his third rushing TD of more than 65 yards this season.
Perry's shifty 46-yard run to the Navy 11 early in the third quarter put him over 1,000 yards for the season and led to Moehring's second field goal, from 24 yards, to make it 13-7.
Army: Coach Jeff Monken has Army on a major upswing. This victory will do wonders for a program that had suffered through the longest losing streak by either team in this rivalry.
Navy: Perry was the fastest and most dangerous player on the field, but wasn't as effective in the second half. Still, he bought a dynamic missing in last year's Army game when Navy had 112 yards rushing. Perry had 130 yards on the ground himself with 11:28 left in the second quarter.
Navy offensive coordinator Ivin Jasper coached after missing Wednesday's practice to be with his 14-year-old son. Jarren Jasper has had medical issues as he awaits a heart transplant. Navy players wore a heart sticker with "JJ" on the back of the their helmets.
Simone Askew made history when she led the Corps of Cadets in the pregame march-on. Askew is the first black woman to be first captain, the highest student position at West Point.
TRUMP & TILLERSON: A year after attending the game as president-elect, Donald Trump tweeted that he would be watching on TV. "On behalf of an entire Nation, THANK YOU for your sacrifice and service!" the president wrote.
After the game, Trump tweeted: "Great Army - Navy Game. Army wins 14 to 13 and brings home the COMMANDER-IN-CHIEF'S TROPHY! Congratulations!"
Secretary of State Rex Tillerson handled the opening coin toss.
Send a breaking news alert
Report a correction or typo
Learn more about the 6abc apps