South Sydney half-back Adam Reynolds has kicked three field goals in the last 10 minutes — including one in the final minute — to send the Rabbitohs to within 80 minutes of the NRL grand final with a 13-12 win over St George Illawarra.

With St George Illawarra leading by one with two minutes to go on Saturday night at Sydney's Olympic stadium, the semi-final seemed destined for golden point when Reynolds nailed his second field goal.

But the Dragons inexplicably failed to get to a kick on their last play, which went through the hands of playmaker Ben Hunt, giving Reynolds the final say in a dramatic win.

The Rabbitohs face the Sydney Roosters at the Sydney Football Stadium next Saturday for a spot in the decider, with the winner to face either Melbourne or Cronulla.

The Dragons appeared on track for a stunning upset when they willed themselves to an eight-point lead in front of a crowd of 48,188.

But Reynolds proved the hero, scoring all 11 second-half points to steer his team to victory.

The Dragons lost Tariq Sims to a knee injury early after halftime but kicked out to an eight-point lead on Zac Lomax's penalty goal in the 53rd minute.

South Sydney's Tom Burgess is brought down by the St George Illawarra defence. ( AAP: Craig Golding )

But Reynolds flipped the script in the space of three minutes, putting Angus Crichton through a hole and then backing up to score the try.

He then potted a penalty goal not long after to level the game.

Hunt hooked a field goal attempt wide in the 69th minute and Reynolds responded by coolly sending his first one-pointer over the next minute in what kick-started the frenetic finish.

The lead would change two more times, with Reynolds' second field goal also wobbling over despite getting partly charged down by a Dragons chaser.

He then broke the hearts of the Dragons with his third and final - a feat not achieved since 1971 - to send the Rabbitohs through following a controversial week off the field.

Both sides traded early penalties in a closely contested opening 20 minutes, which included a try-saving tackle from Matt Dufty on a flying Alex Johnston in the 25th minute.

There was a scary moment not long after, when Rabbitohs winger Campbell Graham somersaulted in mid-air following a collision with chasing Dragons forward Jeremy Latimore.

Latimore was placed on report for the dangerous incident but it failed to stop their growing confidence as Hunt dummied his way through a gap for the opening try.

The Dragons number seven lulled John Sutton across the line before turning on the afterburners to give his team a six-point lead at the break.

AAP