After Nick Visco kicked a 44-yard field goal, Wood was ahead, 3-0, at intermission. Sophomore John Reid produced Prep's first score by returning the second-half kickoff 99 yards.
Midway through the third quarter, on a halfback-option toss, Andrew Guckin delivered a 37-yard strike to wideout Chris Rahill, who began the season as Wood's starting quarterback, to put the visitors ahead, 10-7.
Late in the third period, Hawks quarterback Chris Martin and freshman wideout Cameron Chambers hooked up for a 32-yard touchdown, beating Wood's cornerback along the left sideline. Kyle Battin's extra-point boot made it 14-10.
The Prep's defense was keyed by tackle Paul Johnson, end Shane Williams, linebackers Todd Jones and Tim Rafter, and cornerback Reid and safety Tom Johnson. The Hawks sacked Wood's freshman QB, Tom Garlick, five times.
Battin's 28-yard field goal gave Gabe Infante's squad a 17-10 advantage with 9 minutes, 14 seconds remaining in the fourth quarter.
Sophomore tailback Olamide Zaccheaus' 15-yard burst clinched the victory with less than two minutes to go.
In the fourth quarter, the Prep's Tom Johnson and Pat McCabe made interceptions, and Rafter recovered a fumble.
In the first half, the Vikings' defense held the Hawks to 54 yards rushing, on 13 attempts. Martin hit on just 4 of 12 passes for 24 yards.
For Wood in the opening 24 minutes, fullback Josh Messina (eight for 64) and Guckin (12 for 53) combined for 117 rushing yards.
The Prep notched four first downs on its opening series, but none the rest of the half. The Vikings totaled 129 yards rushing and 86 passing (Garlick was 6 for 10) before the break.
Archbishop Wood 0 3 7 0 - 10
St. Joseph's Prep 0 0 14 9 - 23
AW: FG Nick Visco 44
SJP: John Reid 99 kickoff return (Kyle Battin kick)
AW: Chris Rahill 37 pass from Andrew Guckin (Visco kick)
SJP: Cameron Chambers 32 pass from Chris Martin (Battin kick)
SJP: FG Battin 28
SJP: Olamide Zaccheaus 15 run (kick blocked)
Contact Rick O'Brien at email@example.com, or @ozoneinq on Twitter. Read his blog, The O'Zone, at www.philly.com/ozone.