Penrith Panthers beat South Sydney Rabbitohs 14-12 to win the NRL Grand Final and exorcise the demons of their defeat in the 2020 showpiece.

Melbourne Storm just about held off a remarkable Panthers fightback last year, but this time around Ivan Cleary's side were in charge almost throughout.

The Panthers dominated much of the first half and were unfortunate to only be two points up at the break.

Matt Burton got the first try of the game as he capitalised on a poor read by Campbell Graham, but the Rabbitohs got one of their own soon after, Cody Walker dazzling with a solo run before tapping down.

The second period followed much the same pattern as the Rabbitohs found themselves under pressure for prolonged periods, and it eventually paid off 11 minutes from time.

Stephen Crichton intercepted a Walker pass near the 50-metre line and he ran clear to get the try, with Nathan Cleary adding the conversion.

The Rabbitohs had the opportunity to go level after Alex Johnston went over to get them back to within two points, but Adam Reynolds' touchline conversion attempt went wide of the posts with four minutes to go in what proved to be a cruel ending to the captain's time at the club.

The Panthers held on to win the Grand Final for the first time since 2003.