Portadown held the lead on three occasions - but had to settle for a share of the festive spoils as a last-gasp penalty kick left Glenavon on level terms at 3-3.
Mark McAllister’s double set the Ports on course for the Danske Bank Premiership points at 3-2.
However, a red card for goalkeeper David Miskelly led to Eoin Bradley firing home his second of the afternoon with a late penalty kick.
McAllister’s strike partner, Darren Murray, had kicked off the scoring in the first half before Bradley levelled. McAllister put the home side back on top - only for Glenavon to grab another equaliser off Ciaran Caldwell’s strike.
Another twist arrived when McAllister made his mark for the second time in a derby date disrupted by difficult pitch conditions that reduced the quality of passing football.
Sean Mackle’s expert run to evade the offside trap ended with a low cross on 29 minutes that Murray forced home despite the efforts of Glenavon’s Rhys Marshall.
Glenavon levelled thanks to a slick strike by Bradley off Kevin Braniff’s glancing header into space.
Portadown closed the first half on song as Glenavon goalkeeper James McGrath failed to deal with a ball into the penalty area and McAllister enjoyed the final touch with a close-range finish.
Miskelly proved alert to frustrate Ciaran Martyn during a strong spell of pressure after the break by the visitors.
However, Glenavon eventually made it 2-2 as the Ports struggled to clear the threat and Caldwell found the top corner with a superb sidefoot finish.
Murray had a shot blocked by Marshall after Robert Garrett’s good work as both sides pushed hard in search of the derby rewards.
Portadown’s third of the day was scored on 79 minutes as substitute Tim Mouncey picked out Murray and his cross into the path of Mackle led to a save by McGrath but McAllister guided in the rebound.
Portadown were moments away from victory but the final talking point went in the favour of Glenavon as Miskelly’s foul on Bradley resulted in red, the introduction of Billy Brennan as substitute goalkeeper and a final equaliser.
PORTADOWN: David Miskelly, Chris Casement, Ross Redman, Chris Ramsey, Garry Breen, Peter McMahon, Sean Mackle, Darren Murray, Mark McAllister, Michael Gault, Robert Garrett. Subs: Billy Brennan (on for Murray, 92 mins), Tim Mouncey (on for Garrett, 66 mins), Gary Twigg (on for McMahon, 74 mins), Jordan Lyttle, Shea Conaty.
GLENAVON: James McGrath, Kyle Neill, William Murphy, Eoin Bradley, Conor Dillon, Ciaran Caldwell, Rhys Marshall, Kevin Braniff, Shane McCabe, Ciaran Martyn, James Singleton. Subs: Kris Lindsay, Andy Kilmartin, Mark Patton (on for Neill, 74 mins), Mark Sykes, Darren Forsyth (on for Marshall, 86 mins).
Referee: Ross Dunlop.