After trailing by just five points at the final change, Adelaide looked set to snatch the game but innacurate kicking in the last quarter cost it a much-needed victory.
Nathan Buckley was brilliant, after missing the last two matches with a hamstring injury, while Tarkyn Lockyer and James Clement also impressed as the Magpies won 15.9.99 to 14.13.97.
Buckley had 37 disposals and kicked two goals, including Collingwood's last goal of the match to help the Magpies hold on against an Adelaide side desperately trying to stay in touch with the top eight.
Collingwood opened the match with two goals to Clement and held a small lead for most of the first half, before Darren Jarman put on a brilliant display to kick five goals in the second quarter and put the Crows in front by four points at half-time.
But Clement was moved onto Jarman in the second half and kept him from scoring another goal for the match, although he kicked three behinds in the second half.
Adelaide's Matthew Clarke dominated the ruck against Josh Fraser and Steven McKee, the Crows doubling Collingwood in hit-outs and Kane Johnson, Tyson Edwards and Simon Goodwin were able to make use of it to clear the ball from the centre.
But the Magpies were able to run the ball out of defence, with Lockyer particularly effective across the half-back line, and he also kicked one of Collingwood's two second half goals.
Ben Hart kept talented forward Chris Tarrant quiet for most of the match, Tarrant finishing with two goals from limited chances.
Jarrod Molloy provided a strong forward target for the Magpies, but they were forced to rely on a large spread of goal kickers, with no player kicking more than two majors.
Two brilliant snapped goals by Leon Davis, one in each of the second and third quarters, were a match highlight.
Anthony Rocca and Mark Richardson were late withdrawals for Collingwood before the game.
The Magpies moved to fourth spot on the ladder with the win, but will drop back to fifth if Richmond beats St Kilda tomorrow.
Scoreboard:
COLLINGWOOD: 4.4, 9.7, 13.8, 15.9 (99)
ADELAIDE: 3.3 10.5 12.9 14.13 (97)
Goals: Collingwood: L Davis 2 N Buckley 2 J Clement 2 S McKee 2 C Tarrant 2 T Lockyer 2 J Molloy N Davis A Dimattina. Adelaide: D Jarman 6 P Vardy 2 T Edwards M Stevens I Perrie A McLeod K Johnson M Ricciuto.
Best: Collingwood: N Buckley T Lockyer J Clement J Molloy P Licuria C Steinfort. Adelaide: M Clarke K Johnson D Jarman M Ricciuto S Goodwin T Edwards.
Injuries: Nil
Reports: Nil
Umpires: D Woodcock M McKenzie M Nash
Crowd: 39,010 at Football Park