The Sailors didn't record a first down on its last two possessions.
Villa Park running back Meki Tafuna cut the deficit to 21-19 at the 5:51 mark, when he recorded his second 11-yard touchdown run.
Villa Park got the ball back right, on the opponent's 44, after the Sailors went three-and-out and punted. The Spartans' go-ahead score came with 1:57 left, with running back Justin Mottram leaping into the end zone from one yard out.
Newport Harbor's next drive ended on downs, on Villa Park's 22, with 66 seconds left.
Villa Park (11-1) ran out the clock. The Spartans won their ninth straight game and advanced to the semifinals to play at defending Southwest Division champion Tustin (12-0) on Friday.
In the first half, Newport Harbor ran just 14 plays to Villa Park's 40.
The Sailors still went into halftime with a 14-6 lead. Despite the limited plays on offense, the Sailors produced the biggest plays, both coming in the second quarter.
The first came 22 seconds into the quarter. Quest Truxton returned a punt 84 yards for a touchdown, giving Newport Harbor a 7-6 lead.
With 1:42 left in the half, quarterback Cole Norris hit wide receiver Landon Gyulay in stride for a 53-yard touchdown pass.
Teaupa rushed 20 times for 99 yards and a touchdown against Villa Park, giving him 1,675 yards for the year.
The single-season yard total by Teaupa is the eighth best in the Sailors' record book. Teaupa surpassed Harold Shefflin's 1,618-yard season in 1942.
— David Carrillo Peñaloza