St George Illawarra Dragons mustered a spectacular late fightback at South Sydney Rabbitohs on Friday, only for Campbell Graham to snatch a 20-16 home win late on.

The Rabbitohs, second in the NRL ladder, looked to be cruising to victory as they led 14-2 with just 15 minutes to play.

Dane Gagai scored twice, with Cody Walker also crossing, and only an early Gareth Widdop penalty goal had the Dragons on the scoresheet.

However, Jason Saab and Widdop looked to have secured a sensational victory, two tries from the former followed by three kicks from the latter - including a 79th-minute penalty.

There was still time for the Rabbitohs to go down the other end, though, and Graham went over right at the last to deny the visitors.

Meanwhile, Robbie Farah marked his 300th NRL game with a try as Wests Tigers edged Newcastle Knights 28-26 in another thriller.

Farah and Benji Marshall both scored in the same match for the first time since 2011 as Wests recovered from a dismal start to stun the Knights, ending a run of three straight defeats.

A pair of Paul Momirovski fumbles had let hosts Newcastle in to score twice in the opening six minutes through Jesse Ramien and Kalyn Ponga.

However, Corey Thompson went over twice for the visitors and then Marshall's superb individual score secured a half-time lead.

Back came the Knights and Hymel Hunt, before Farah's moment was soon followed by another home try through Tautau Moga.

Momirovski made amends for his earlier errors with an effort that stretched Wests' lead again, only for Shaun Kenny-Dowall to cross.

But Ponga missed the conversion to see Newcastle two points behind in the closing stages and their hopes of another fightback were ultimately halted after he went to the sin bin for foul play on Michael Chee Kam.