The 5-foot-8, 160-pound Hanlon, a first-year starter, carried eight times for 96 yards and three touchdowns. He scored on runs of 25, 8, and 55 yards.
"This is such a great feeling," he said. "We got up early on them. After they climbed back into the game, we were able to hold them off at the end."
Plymouth Whitemarsh (7-2 overall, 6-0 American) rebounded after starting the 2013 campaign with nonleague losses against Perkiomen Valley and Abington.
"The turning point for us was the third game against Downingtown West," Hanlon said. "We came back in the fourth quarter and beat them in overtime. That was our coming-of-age win."
On the Colonials' first possession of the night, Hanlon's 25-yard score capped an 11-play, 81-yard series. He darted around the left corner, breaking at least two tackles on his way to the end zone.
"He's the most valuable type of quarterback to have," Colonials coach Dan Chang said. "He spends a lot of time with me working on the game plan. On top of that, he's very athletic and he's a playmaker."
Midway through the second quarter, on a midline option play, Hanlon scampered 55 yards to give the hosts a 21-0 advantage.
PW, with fullback Jose Mora-Vega and tailback Brian Afflick doing the bulk of the damage, netted 296 rushing yards on 53 attempts. The offensive line featured tackles Ryan Bischoff and Jack Mailey and guard Steve Kovacic.
Upper Dublin (8-1, 5-1) rallied in the second half and made it 28-23 on Josh Lee's 1-yard plunge early in the fourth quarter.
The Cardinals threatened in the late going, reaching the Colonials' 28, but a holding penalty and dropped pass ended the comeback bid.
Hanlon, of Conshohocken, has a 4.95 grade-point average on a weighted scale and is a National Merit Scholarship semifinalist. He is considering Massachusetts Institute of Technology, Penn State, and Princeton.
Upper Dublin 0 7 9 7 – 23
Plymouth Whitemarsh 7 14 7 0 – 28
PW: Connor Hanlon 25 run (Zach Zygmunt kick)
PW: Hanlon 8 run (Zygmunt kick)
PW: Hanlon 55 run (Zygmunt kick)
UD: John Derr 1 run (Mike D'Ambrosio kick)
UD: Kaleif Lee 1 run (D'Ambrosio kick)
PW: Brian Afflick 20 run (Zygmunt kick)
UD: Josh Lee 1 run (D'Ambrosio kick)