Things have suddenly changed in Haverhill.
The Hillies, who in the past few years endured a 32-game losing streak, pulled out a close one, handing Chelmsford its first loss, 30-23, on Saturday afternoon.
Quarterback Tommy Morgan connected with Jordan Javier with just seven seconds left to give Haverhill the win.
“We’ve gotten better, we’ve closed the gap,” said Haverhill coach Tim O’Connor. “We still have a long way to go.”
When O’Connor took over the program three years ago, it was en route to its second consecutive winless season. Haverhill, which won a total of four games last year, is now 4-1.
Morgan led the way for the Hillies on Saturday, fighting through the pouring rain, completing 16 of 21 passes for 196 yards and two touchdowns. Both of his touchdown passes were to Javier, who finished with seven receptions and 92 yards.
After a scoreless first quarter, Chelmsford’s Jack Campsmith and Jeff D’Auria scored touchdowns.
With about a minute left before halftime, Hillies running back Chance Brady broke a 43-yard touchdown run to make it a 7-point game.
The Lions bounced back and opened the third quarter with a 30-yard touchdown catch by Joe St. Hilaire.
Trailing by 13 to start the fourth, Brady punched in a 7-yarder. The senior running back rushed for 192 yards on 20 carries.
The Hillies’ defense came through in the crucial moments, holding the Lions to just a field goal in the fourth quarter, and allowing the offense to score the game’s final touchdown.
Andover 51, Tewksbury 42 — CJ Scarpa picked apart the Redmen’s defense, throwing for 302 yards and three touchdowns, while rushing for two more scores to lead the Golden Warriors. Jack Sylvester added two touchdowns for Andover. Tewksbury quarterback Johnny Aylward threw for three touchdowns and 210 yards, and also scored a rushing touchdown.
Weymouth 49, Newton North 7 — Jack Lehan tossed three TD passes as the visiting Wildcats improved to 5-0.
Governor’s Academy 36, BB&N 12 — Jesse Gwozdz scored two TDs, one rushing and one on a punt return, for the Governors.
Belmont Hill 35, Nobles 7 — Petros Davos ran for a score and threw for another and Greg Plumb ran for one TD and caught another for the visitors.
St. Sebastian’s 29, Milton Academy 15 — Brendan Daly rushed for four touchdowns in the Arrows’ win.
Middlesex 40, Brooks 28 — The Zebras’ Nick Andonian rushed for 75 yards and a score and threw for three more touchdowns and 192 yards.
Thayer 34, St. Paul’s 28 — The Tigers’ Jack Becker threw for 184 yards and three touchdowns and Bryan Vieira caught six passes for 144 yards and two scores.
Hingham 14, Catholic Memorial 12 — Ricky Sullivan rushed for 100 yards and a touchdown for the Harbormen, who improved to 5-0.
Lynn Tech 44, Mystic Valley 0 — Senior quarterback Kennedy Gomes eclipsed 4,000 yards passing for his career and rushed for a 19-yard score. Shaun Osorio ran for 170 yards and three touchdowns, and returned a fumble 63 yards for a score.
Lynn English 35, Malden 12 — Junior Isaiah Davis rushed for 110 yards and two touchdowns on eight carries and junior DJ Mullin threw for 181 yards and two scores on 8 of 9 passing.
Upper Cape 34, Tri-County 18 — The visiting Rams (4-0) got 152 yards rushing and three touchdowns from sophomore Dylan Derby.
Oliver Ames 28, Pembroke 6 — Matt Berksza and St. Clair Ryan combined for four rushing touchdowns.For school football summaries, go to Boston.com/schools.