The Warriors won after Kamalu Umu forced Black Knights quarterback Max Jenkins to fumble at the Hawaii 27-yard line with 24.3 seconds remaining.
Officials originally ruled that Jenkins was down for a 1-yard rush before video replays overturned the call.
Hawaii quarterback Bryant Moniz was 25 for 36 for 343 yards passing. He started the game 17 for 22 for 239 yards and three touchdowns in staking Hawaii to a 21-0 lead less than four minutes into the second quarter.
Kealoha Pilares caught six passes for 104 yards and a touchdown for the Warriors.
Moniz completed passes of 13 and 31 yards on the winning drive, which was aided by a 15-yard personal foul call against Steven Erzinger.
Down 21-0 early in the second quarter, Army scored four unanswered touchdowns in the second and third quarters to take a 28-21 lead, scoring touchdowns after recovering fumbles on a botched kickoff and a sack in the third quarter.
Army got within 21-14 early in the third quarter, and regained possession six seconds later when Hawaii's Mana Lolotai fumbled the kickoff.
Army's Brian Cobbs pounced on the loose ball at the Warriors 24. After reaching the Hawaii 2, the Black Knights took advantage of an illegal substitution penalty against the Warriors in the moments before Alex Carlton was to attempt a 19-yard field goal.
Instead, Army got the ball at the 1 on fourth down, and Malcolm Brown ran in for a touchdown to tie it at 21-21.
Josh McNary sacked Moniz two plays into the Warriors' ensuring series, knocking the ball loose. Marcus Hilton recovered the fumble, and Army later scored on Jenkins' 1-yard run to give Army the 28-21 lead. It was McNary's third sack of the game.
Hawaii needed only four plays over 65 yards to tie it at 28-28 on its next possession on Alex Green's 3-yard run.