Leon Davis played arguably his best game for the club, collecting 21 touches and kicking three goals as he clearly outpointed Dion Woods.
For the second week in a row, Friday night football was marred by appalling goal-kicking in perfect conditions, with a combined 6.19 to half time in addition to several complete misses.
The first term's combined 5.10 was made to look positively brilliant by the 1.9 in the second, but the kicking improved in the second-half before the Pies won 14.22 (106) to 11.7 (73).
The loss is yet another failure for Fremantle this season on the big stage.
A win would have seen them almost certainly tie up a second consecutive finals spot, but it was only Collingwood's terrible kicking that kept Fremantle in it at the long break.
As a result, Fremantle still hasn't tied up a finals spot and have Geelong at Skilled Stadium, the Eagles at Subiaco and St Kilda at Telstra Dome on the run home.
Collingwood was completely dominant around the stoppages and at ground level with Paul Licuria, Ben Johnson, Shane O'Bree, Brodie Holland and Shane Woewodin clearly winning through the midfield.
Des Headland continued his late season improvement while Troy Cook worked hard in defence and Troy Simmonds likewise in attack.
Fremantle surged in the last and got to within 14 points but Collingwood held firm to win a game they should have had in the bag by quarter time.
The Magpies were without most of their spine with Anthony Rocca, Simon Prestigiacomo and Shane Wakelin missing and with Chris Tarrant having missed the last three with a hamstring injury.
Davis and David King booted three each for the Pies while Paul Medhurst, Andrew Browne, Simmonds and Jeff Farmer all kicked a pair each.
The first term was all Collingwood, especially in the first 20 minutes. The Dockers grabbed the first major through Troy Simmonds, but soon enough, the inside-50s were 11-2 in favour of the Pies.
However, the Magpies couldn't convert, and Davis, Ryan Lonie and Licuria's goals were the only shots of note as the Pies booted nine points before the first break.
It was basically the same in the second term, minus the goals. The Pies kicked the only major of the quarter, when King drifted in the clear just 20 metres out and both teams added five behinds.
Things improved somewhat in the third, with the teams swapping goals through the term as Collingwood added six and the Dockers five as Collingwood turned for home just 28 points ahead despite dominating the play.
Collingwood coach Mick Malthouse was delighted with the way James Clement marshalled an inexperienced backline while playing with a cheekbone that was fractured early in the contest.
“Jimmy was absolutely outstanding,” Malthouse said.
“He set a wonderful example to a side that around him had (Tristen) Walker, (Matthew) Lokan, (Julian) Rowe, (Justin) Crow, Rhyce Shaw, (Nick) Maxwell down there.
“You need someone to stand up and he set such a wonderful example.
“It is more than gutsy – it was a very calculated decision to stay on the field.
“When he knows the injury he's got and is prepared to stay out there for his team-mates it is a wonderful example.”
Fremantle coach Chris Connolly admitted after the game that his team needed to improve in pressure games.
"(I'm) really disappointed, really disappointed," he said.
"It was just like the Essendon game on the Friday night, a game we reflected back on.
"We're on the big stage, we need to show we've improved in this area and that area.
"The two areas are - being more desperate to win contested balls, and making sure that in the phases of the game when they have it that we really man up with physical purpose.
"And we didn't. We gave them options to run the ball, and they didn't give us options.
"Their transition play, to run and attack, and then defend with purpose, was outstanding. They really taught us a lesson."
Fremantle: 2.1 2.5 7.7 11.7 (73)
Collingwood: 3.9 4.14 10.17 14.22 (106)
Goals: Fremantle: Medhurst, Browne, Simmonds, Farmer 2, Headland, Longmuir, Smith
Collingwood: Davis, King 3, Lonie, Licuria, Tarrant, Burns, O'Bree, Lockyer, Woewodin, Holland
Best: Fremantle: Headland, Cook, Longmuir, Simmonds, Farmer, Pavlich
Collingwood: Davis, Clement, Licuria, Johnson, O'Bree, Holland, Woewodin
Injuries: Fremantle: Bell (groin), Parker (shoulder)
Collingwood Clement (cheekbone)
Reports: None
Umpires: Rowe, Woodcock, Jeffery
Crowd: 40,901 at Subiaco Oval