Penny rushed for 216 yards on 18 carries, including a 95-yarder to open the scoring midway through the first quarter. He skipped through some traffic at the line of scrimmage and out-ran Sun Devils' defenders into the end zone for the third-longest rush in school history.
Penny, a senior, added a 99-yard kick return on the first play of the second quarter. It was his sixth career kick return touchdown -- a Mountain West record and most among active FBS players.
He scored a third way late in the third quarter, taking a short pass to the left and juking a defensive back down field en route to a 33-yard reception and a 27-14 lead.
San Diego State (2-0) was up 30-14 in the fourth quarter when Arizona State (1-1) resuscitated its hopes by scoring on a 53-yard pass from Manny Wilkins to receiver Frank Darby on third-and-37 with 8:34 to go. The two-point conversion pass failed.
Penny helped seal the victory with a 27-yard run on third-and-14 on the ensuing possession, which took 5:51 off the clock. The Sun Devils' chances ended when it turned the ball over on downs at the Aztecs' 37 with 32 seconds to go.
Wilkins completed 20 of 33 passes for 298 yards and two touchdowns. He was sacked six times. San Diego State defensive lineman Noble Hall forced two fumbles.
Aztecs quarterback Christian Chapman completed 9 of 18 passes for 73 yards. San Diego State is 1-10-1 all-time against Arizona State.
The Aztecs led 20-14 at halftime, adding a 27-yard field goal by John Baron with six seconds left after being set up at the Sun Devils' 18 with 30 seconds to go following a 12-yard punt.
Arizona State wore its throwback "sunburst" logo on its helmets as part of its night in honoring legendary coach Frank Kush, who died June 22.