PHILADELPHIA -- In its first matchup with Navy as a ranked team in more than 20 years, No. 22 Army edged out a 17-10 victory and extended its winning streak in the series to three games.
Army (10-2) clinched the Commander-in-Chief's trophy in back-to-back seasons for the first time in program history.
The Black Knights started quickly with a four-play touchdown drive on the game's first series.
Both teams struggled to gain traction until the fourth quarter, when Navy pulled within a field goal.
Navy had a chance late to tie or take the lead, but senior quarterback Zach Abey fumbled and Army responded with quarterback Kelvin Hopkins Jr.'s second touchdown of the game to take a 10-point lead.
Navy added a late field goal with less than a minute to play, but couldn't convert the onside kick.
Army's victory at Lincoln Financial Field caps another strong season for fifth-year coach Jeff Monken, who has led his team to 10 wins for the second season in a row. They'll next take on Houston in the Armed Forces Bowl in Fort Worth, Texas, on Dec. 22.
Navy stumbled to 3-10, its worst finish in 11 years led by coach Ken Niumatalolo.
Hopkins starred for Army. In addition to two touchdowns, he led his team in rushing with 64 yards, and added 61 yards through the air.
Fullback Darnell Woolfolk added another 62 yards rushing. Safety Jaylon McClinton had an interception and forced a fumble to go along with nine tackles.
Army had the game's longest play on the first drive, when Kell Walker ran for 51 yards, but yards -- and points -- were more difficult to come by on the ensuing drives. Kicker John Abercrombie missed a 33-yard field goal wide right, and Army took a slim 7-0 lead into halftime despite a 180-39 advantage in total offense.
Abercrombie connected from the same distance in the third quarter.
Navy couldn't score deep into the second half and pulled Abey, who threw two interceptions and completed no passes in four attempts. Senior Garrett Lewis provided a spark for the Midshipmen, completing a 34-yard pass to sophomore running back Keoni-Kordell Makekau, easily Navy's longest play to that point in the game.
But Lewis also had a costly fumble inside Army's five-yard line. He later scored on a 14-yard run.
Malcolm Perry, who had more than 1,000 rushing yards for Navy this year and rushed for 250 on 30 carries in last year's Army-Navy game, was held under 5 yards rushing until breaking off a 43-yard run in the fourth quarter. Perry finished with 53 yards on six carries.
Navy's defense, led by linebacker Taylor Heflin and his 14 tackles, helped keep Army in check.
Navy maintains a 50-62-7 advantage in the all-time series. It won 14 straight games from 2002 to 2015.
President Donald Trump, who just before the game announced White House Chief of Staff John Kelly will be leaving his administration by the end of the year, attended the game and participated in the pre-game coin flip. He also announced Army Chief of Staff Gen. Mark Milley will take over as chairman of the Joint Chiefs of Staff.
The game was played in front of an announced crowd of 66,729.