Fremantle has produced the first upset of the finals series, beating Geelong by 15 points at Kardinia Park to qualify for the preliminary final.
On a grey day in Geelong, the Dockers worked harder over four quarters to shock the home side and clinch a 12.15 (87) to 9.18 (72) win.
It was only the second loss for Geelong in the last 44 matches at Kardinia Park, and the second year running that the Dockers had beaten the Cats in the finals.
The Cats had the early advantage, booting four goals to two in the opening quarter, but Fremantle fought back into the contest.
The Dockers' midfield - including giant ruckman Aaron Sandilands - got on top in the second term, kicking five goals to two to take a four-point lead into half-time.
The Cats also had injury troubles, with Corey Enright's right knee buckling under him in the first half. He was subbed out at half-time for Paul Chapman.
There were four lead changes in a volatile third quarter, as the Dockers kicked 3.3 to the Cats' 3.2 to hold a five point lead into the final term.
The Dockers kicked the only two goals of the final quarter. The straight-shooting Chris Mayne kicked truly at the 10-minute mark.
Geelong missed a couple of chances, but Fremantle's tough defence stifled the opposition enough and Stephen Hill raced half the length of the field to kick the sealer with 90 seconds left to set up a memorable finals win.
The Dockers will now host a home preliminary final in a fortnight, while Geelong will face the winner of Saturday night's elimination final between Collingwood and Port Adelaide.
More to follow.
12.15 (87) - M Barlow 3, M Pavlich 2, S Hill 2, H Ballantyne, M Walters, L Spurr, A Sandilands, C Mayne
9.18 (72) - S Johnson 3, J Podsiadly 2, N Vardy 2, J Corey, S Motlop