SOUTH PORTLAND – The cheers coming from the bouncing mass of silver and red in the fog-shrouded south end zone at Martin Memorial Field said it all Saturday.

After a season of heartbreak and disappointment, the South Portland football team had the win that made it all worthwhile.

Joey DiBiase ran for 110 yards and scored two touchdowns as South Portland shocked playoff-bound Portland with a 19-6 victory in the regular season-ending Battle for the Bridge.

Portland (5-3) still has the Western Class A playoffs and its annual Thanksgiving Day game against Deering to play. South Portland (2-6) is content to keep the trophy on its end of the Casco Bay Bridge for a third straight year.

Make that elated.

“The great thing about having a rivalry is that we end the season with this game every year,” South Portland Coach Steve Stinson said. “We have a trophy in our office and we want to keep it there. We approach this like it’s a championship game. It’s a great way to finish this season, which has been up, down and sideways.”

Stinson credited the leadership of his nine seniors.

“It just so happened we had Senior Night and Homecoming on the same night,” said senior tackle Cody Munson. “Either way it’s the Battle for the Bridge. It’s the game against Portland. We’ve got to beat them.”

Tailback Justin Zukowski led the Bulldogs, running 13 times for 46 yards. Ryan Ruhlin completed eight of 15 passes for 85 yards. Tailback Nick Volger scored on a 4-yard run for Portland in the second quarter.

The Bulldogs entered in contention for a home game in the Western Class A playoffs. By game’s end their disappointment was palpable.

“Disastrous,” Portland Coach Jim Hartman called the result. “I didn’t have the team prepared. (South Portland) wanted it and they got it.”

Quarterback Duncan Preston gave the Riots the lead in the opening seconds of the second quarter, pounding in from the 1. DiBiase’s kick was good for a 7-0 lead. The score capped an eight-play, 52-yard drive that featured two big runs behind Munson — one by DiBiase for 23 yards, and another by Preston for 21.

“Your record doesn’t really matter in the Bridge game,” said Preston, who completed four of 10 passes for 76 yards, and ran for 85 yards and a touchdown. “It’s our championship game and we really wanted it.”

The Riots held the Bulldogs on four plays before scoring again. Preston hit DiBiase in the right flat and he raced 49 yards up the right sideline for the score.

“I was determined to get there,” DiBiase said. “I wasn’t going to let anybody stop me.”

Portland blocked the kick and South Portland led, 13-0.

The Bulldogs came right back, covering 66 yards in six plays, ending with Volger’s 4-yard TD run around left end. Kyle Reichert’s kick failed but the lead was cut to 13-6.

DiBiase sealed it with about five minutes to play on a 26-yard run that ended with a dive across the goal line at the right pylon.

Duncan set that play up with a 23-yard run, gaining 20 after breaking free on a great second effort. South Portland’s pass for the conversion failed but the damage was done.