PHILADELPHIA, DEC. 8 -- Army's two weak spots are passing and punting. The Cadets minimized both today, throwing the ball only once -- for a touchdown -- and not kicking it away at all in a 30-20 victory over Navy.

Army executed its wishbone offense in superb fashion, rolling up 367 yards on the ground. Junior quarterback Willie McMillian did most of the work, amassing a career-high 195 yards on 35 carries.

"We ran into a frustrating day," said Navy Coach George Chaump. "It was a matter of not being able to stop them. I've never seen a team win a ballgame that didn't force the other team to punt."

For a while, it appeared Army was going to play a perfect game. In the first half, the Cadets didn't commit a turnover or a penalty as they built a 17-0 lead.

But Navy drove 80 yards to score just before halftime and twice thereafter closed within less than a touchdown, at 17-14 and 24-20. Each time, Army answered with a score.

"That was the key," said retiring Army Coach Jim Young, a winner for the fifth time in eight Army-Navy games. "Every time Navy put the ball in the end zone, we came right back. What we did today was basically what we've done for the last seven years -- run the ball and run the clock. If you do that successfully, you win."

The Midshipmen closed to 17-14 late in the third quarter when Brad Stramanak, a freshman fullback making his first varsity start, broke through the right side and raced 45 yards to score, carrying Army defender Ed Givens the last 15.

Before seafaring fans had finished celebrating, Mike Mayweather returned the ensuing kickoff 41 yards to the Navy 47. Three plays set up a first down at the 36 and shortly thereafter McMillian threw Army's only pass of the game. Navy cornerback Chris Cordero appeared to have split end Myreon Williams covered, but Cordero turned to look for the ball and it came down in Williams's hands at the goal line.

It was Williams's 13th catch of the season -- for a total of 435 yards and five touchdowns. Incredibly, it was Army's first touchdown pass against Navy since 1971, when Kingsley Fink threw two in a 24-23 victory.

"We don't throw the ball much, but we work on it every day at practice," McMillian said. "Most of our game is basic wishbone -- run outside, run inside, grind down the clock. But we surprise people every once in a while."

Stopped on downs at their 49, the Midshipmen got a big break when Jefferson Triplett's mediocre punt bounced off the foot of Army's Rick Angle, with Scott Zellem recovering for the Midshipmen at the Cadets' 23-yard line.

It took five running plays for the Midshipmen to score, quarterback Alton Grizzard covering the final few inches. With the score 24-20 and 10:10 remaining, Chaump elected to go for two points and Grizzard missed on a pass to Dave Berghult.

"I was thinking in terms of a field goal to win it," Chaump said. "We needed a touchdown and I thought they needed a touchdown. But surprisingly they went for a field goal."

A 29-yard run by McMillian helped the Cadets move from their 32 to the Navy 21 and, on fourth and seven, Pat Malcom kicked his second field goal in three tries for a 27-20 advantage.

On Navy's first play after the kickoff, Grizzard's long pass toward Jerry Dawson was intercepted by safety Mike McElrath at the Army 46. That gave the Cadets the opportunity to run down the clock while getting into position for another Malcom field goal, a 25-yarder that clinched it with 36 seconds on the clock.

"The big turning point was that interception I threw," Grizzard said. "That hurt us real bad. We should have won that game. The only point I thought we were out of it was when there were four seconds left."

In evening the series at 42-42-7, the Cadets scored the most points against Navy since their 38-0 victory in 1949. For a long time, it appeared this game might have a similar finish.

The Cadets were in complete command through the first 26 minutes, scoring on their first three possessions for a 17-0 advantage while running more than 18 minutes off the clock.

"They executed their offense," Chaump said. "It's a torture treatment, like a water drop on the forehead. On the sidelines, you look up and there's 12 minutes. Then there's four minutes and they've got a 16-play drive."

On its first possession, Army marched 58 yards in 14 plays that required seven minutes, Malcom booting a 30-yard field goal when Navy finally was able to call a halt at its 13-yard line. McMillian gained 47 of those yards in eight carries.

Chaump filled his kickoff return team with plebes in a bid for extra enthusiasm, but he left Dawson, a senior, in as one of the receivers. It cast a pall on the Midshipmen when Dawson caught the first Army kickoff with his knee on the ground at the 12.

Despite that unpromising start, Navy drove to the Army 36, where tailback Jason Pace fumbled on his first carry and Rone Reed recovered for the Cadets.

The Cadets quickly took advantage, marching 65 yards in eight plays and two defensive penalties -- the only violations of the half. Mayweather covered the final three yards on the first play of the second quarter for his 37th career touchdown.

When Navy was forced to punt on its next series, the Cadets drove 73 yards in 16 plays to score again, McMillian racing the last seven after an adroit fake pitch. Twice in that drive, Army converted fourth-down situations. The Cadets were five for five in such circumstances during the game, once helped by an offside penalty.

Navy began its comeback with 4:15 left in the half and got on the board 26 seconds before the intermission, as Grizzard hit Dawson with a six-yard pass in the right corner of the end zone. That gave Grizzard a Navy one-season record of 12 touchdown passes.

"That gave us a lift, a turn of the tide," Grizzard said. "But this is the Army-Navy game. It's no consolation to come back and make it close. You want to win. The real consolation is that now they're not my enemy any more, the way they were the last two weeks. Now we're on the same team."