First-half goals from Ian Henderson and Steven Davies proved enough to keep Keith Hill's men in fourth place while Ivan Toney's late strike was no more than consolation for the struggling Shrews.
Shaun Whalley was denied an early goal when he lost out in a one-on-one with Dale goalkeeper Conrad Logan and the home side took advantage of that let-off by taking a fourth-minute lead.
Shrews defender Mat Sadler's attempt to play the ball forward struck the shins of Davies and rebounded in behind the visitors' backline, sending Henderson scampering through on goal and he finished clinically.
Dale's second goal of the night in the 28th minute came in controversial circumstances.
Davies challenged Jayson Leutwiler to a high ball which the goalkeeper appeared to have caught until it was hooked out of his grasp by Henderson, leaving Davies with the simple task of converting from close range.
The referee was duly surrounded by red and black shirts protesting and there was an air of confusion about the stadium for a few seconds before the realisation the goal was to stand.
Toney's 86th-minute effort raised the visitors' hopes briefly but Dale were good value for the three points.
Report supplied by the Press Association.
Match ends, Rochdale 2, Shrewsbury Town 1.
Second Half ends, Rochdale 2, Shrewsbury Town 1.
Foul by Matthew Lund (Rochdale).
Jack Grimmer (Shrewsbury Town) wins a free kick in the attacking half.
Attempt missed. Louis Dodds (Shrewsbury Town) left footed shot from the centre of the box is close, but misses to the left.
Foul by Jamie Allen (Rochdale).
Abu Ogogo (Shrewsbury Town) wins a free kick in the defensive half.
Foul by Jamie Allen (Rochdale).
Ivan Toney (Shrewsbury Town) wins a free kick in the defensive half.
Foul by Calvin Andrew (Rochdale).
Adam El-Abd (Shrewsbury Town) wins a free kick in the defensive half.
Goal!  Rochdale 2, Shrewsbury Town 1. Ivan Toney (Shrewsbury Town) right footed shot from the centre of the box to the centre of the goal. Assisted by George Waring.
Substitution, Rochdale. Nathaniel Mendez-Laing replaces Oliver Rathbone.
Substitution, Rochdale. Jamie Allen replaces Callum Camps.
Attempt missed. Louis Dodds (Shrewsbury Town) right footed shot from the centre of the box misses to the right.
Attempt saved. Joe Bunney (Rochdale) left footed shot from outside the box is saved in the centre of the goal.
Corner,  Shrewsbury Town. Conceded by Jimmy McNulty.
Attempt missed. Joe Bunney (Rochdale) left footed shot from the left side of the six yard box is close, but misses to the left.
Foul by Calvin Andrew (Rochdale).
Oliver Lancashire (Shrewsbury Town) wins a free kick in the attacking half.
Substitution, Shrewsbury Town. George Waring replaces Junior Brown.
Substitution, Shrewsbury Town. Gary Deegan replaces Ian Black.
Corner,  Rochdale. Conceded by Adam El-Abd.
Corner,  Rochdale. Conceded by Jayson Leutwiler.
Attempt saved. Ian Henderson (Rochdale) right footed shot from the centre of the box is saved in the bottom left corner.
Ian Black (Shrewsbury Town) is shown the yellow card.
Attempt saved. Ivan Toney (Shrewsbury Town) right footed shot from the centre of the box is saved in the bottom left corner.
Attempt saved. Abu Ogogo (Shrewsbury Town) right footed shot from the right side of the six yard box is saved in the bottom right corner.
Attempt missed. Ivan Toney (Shrewsbury Town) header from the centre of the box is too high.
Foul by Ian Henderson (Rochdale).
Jack Grimmer (Shrewsbury Town) wins a free kick in the attacking half.
Foul by Joe Thompson (Rochdale).
Abu Ogogo (Shrewsbury Town) wins a free kick in the attacking half.
Attempt missed. Joe Bunney (Rochdale) right footed shot from outside the box misses to the left.
Attempt blocked. Joe Bunney (Rochdale) right footed shot from outside the box is blocked.
Oliver Rathbone (Rochdale) wins a free kick in the attacking half.
Foul by Ian Black (Shrewsbury Town).
Attempt missed. Calvin Andrew (Rochdale) left footed shot from outside the box is just a bit too high.
Attempt missed. Ian Black (Shrewsbury Town) left footed shot from outside the box misses to the right.
Substitution, Rochdale. Joe Thompson replaces Steve Davies.
Rochdale made it 10 home wins in a row as they closed the year with victory over Shrewsbury in League One.