Playing in front of a bumper crowd of more than 2000 spectators, Heagney’s long-range strike punished a Perth side that failed to capitalise on some great chances, particularly in the first half.
Perth started the game well, full of confidence after hammering Bayswater 5-0 in the major semi-final two weeks earlier.
They should have taken the lead in the 12th minute but an unmarked Aden Da Luz blasted over the crossbar from 6m out directly in front of goal after being set up by Tim Robertson.
Perth then thought they had the lead six minutes later when Bayswater goalkeeper Devon Spence spilled Mark Pritchard’s corner and the ball went close to crossing the goal line.
Despite the celebrations from Perth, the referee’s assistant ruled that the ball had not crossed the line and the game remained scoreless.
Bayswater finished the first half the stronger team, having a number of efforts saved by Perth goalkeeper Francis Soale.
After half time, Bayswater had a strong penalty claim turned down when striker Gustavo Marulanda appeared to have been brought down in the box by Perth’s Clark Keltie.
Four minutes later though, they hit the lead.
Heagney picked the ball up in the middle of the park and was given far too much room before firing home from outside the box.
Perth were still in the game, and on the hour, midfielder Andreas Theodosiades sent a perfect ball over the top to Ashley Rosindale, whose shot beat Spence but Bayswater captain Trent Kay got back to clear the ball off the line.
Chasing the game, Perth pressed on and went close to the equaliser in the 84th minute.
Pritchard’s corner was headed goal-wards by Perth substitute Harley Orr, but Declan Hargreaves was alert to clear the ball off the line.
It was the last real chance for Perth, whose excellent season came to a disappointing end.
Perth had better luck in the earlier games, with the under-18s coming back from two goals down to defeat ECU Joondalup 3-2 to take the title.
The under-20s also won their grand final with a hard fought 1-0 win over the Stirling Lions.