Fremantle came from 28 points down in the third quarter to beat Sydney 12.11 (83) to 10.11 (71) in the second preliminary final at the SCG on Friday night, kicking the last six goals of the match to reach the second Grand Final in the club's history.

The Dockers will meet the winner of tonight's preliminary final between Hawthorn and Brisbane at the MCG, which starts at 5.15pm AEST. It is Fremantle's first Grand Final since 2013, and it comes the long way: the minor premiers lost their qualifying final to Hawthorn a fortnight ago.

For three quarters the night belonged to Sydney. After Fremantle kicked the first two goals, the Swans kicked the last eight scores of the opening term to lead by 16 at quarter-time, and by 19 at the main break. Logan McDonald kicked three goals from 14 disposals, taking him to 24 goals in his past seven games. Sydney's lead reached 28 midway through the third term.

Hayden Young's set shot from the boundary after the three-quarter-time siren cut it to 21. Then the final quarter swung hard. Fremantle had 23 inside 50s to six, 12 clearances to five and 49 contested possessions to 27, and outscored Sydney 5.4 to 0.1.

Shai Bolton kicked both his goals in the last quarter, the second of them bringing the margin back to a point. Mason Cox put Fremantle in front at about the 15-minute mark with a set shot, the Dockers' first lead since early in the first quarter. Isaiah Dudley ran into an open goal with less than two minutes left to seal it before a crowd of 45,129.

Tonight was such an epic performance to come from behind on the road, backs to the wall," Fremantle coach Justin Longmuir said. "We've got to enjoy that and we will enjoy that for the next couple of days.

Longmuir said the loss to Hawthorn had not shaken the group. "There's no reason why we can't win three games in a row. We've won 14 games in a row this year, so that's not an issue," he said.

Captain Alex Pearce was blunt about how Fremantle had played for most of the night. "Our ball use into the forward line was diabolical at times. We were just kicking it to the red jumper," he told Channel 7. "But, wow, our forwards stood up."

The raw numbers backed him on both counts. Fremantle won the inside 50 count 67 to 49 and the clearances 44 to 30, but their three key forwards, who have 162 goals between them this season, finished with two. Andrew Brayshaw had a team-high 29 disposals and Caleb Serong 28 with 10 clearances. Luke Jackson kicked two goals and shared the ruck contest with Brodie Grundy at 28 hitouts each.

Sydney went into the game without five players suspended over a round 23 breach of club standards: Isaac Heeney, Nick Blakey, Chad Warner, Riley Bice and James Jordon. Captain Callum Mills was also out after rupturing his ACL in the qualifying final win over Brisbane. Errol Gulden did what he could, with 36 disposals and 766 metres gained.

"We were in a really, really good position for three and a bit quarters, but at this time of year you can't give a team any momentum, and they took it," Sydney coach Dean Cox said. "They've been the best team all year."

Tom Papley hurt his right knee in the third quarter but returned after strapping. Stand-in captain Dane Rampe, 36, has not decided on his playing future.

The AFL match report lists no injuries for Fremantle. The squad flies home to Perth today before returning to Melbourne next week for the Grand Final, with Longmuir noting the eight-day break before the decider.