Match ends, Rochdale 1, Port Vale 0.
Calvin Andrew's 95th-minute winner against his old club boosted Rochdale's League One play-off hopes as struggling Port Vale were condemned to their sixth straight defeat.
In a drab first half, Rochdale's Reuben Noble-Lazarus came closest to opening the scoring when he fired just wide.
Vale also went close when Chris Birchall shot wide after a fine move.
It looked to be heading for a goalless draw, but Andrew headed home Callum Camps' cross to win it.
Keith Hill's side move up to seventh, four points off the play-off places, while Vale drop to 16th, now just two points above the relegation places.
Rochdale manager Keith Hill told BBC Radio Manchester:
"That feeling, wow. You wait footballing careers for that type of feeling. As a manager, that's probably the best feeling I've tasted.
"The game was meandering, it was going nowhere and it wasn't a great spectacle - I thought it was 0-0 all over.
"It was just absolutely brilliant. The emotion at the end you can't bottle it. It drives you forward."
- 27CannonSubstituted forCampsat 78'minutes
- 7VincentiBooked at 90mins
- 14HérySubstituted forAndrewat 59'minutesBooked at 90mins
- 11Noble-LazarusSubstituted forLoganat 60'minutes
- 6DuffyBooked at 90mins
- 7BirchallSubstituted forDanielat 76'minutes
- 20MarshallBooked at 90mins
- 11PopeSubstituted forWilliamsonat 48'minutes
- Andy Haines
- Shots on Target
Second Half ends, Rochdale 1, Port Vale 0.
Calvin Andrew (Rochdale) is shown the yellow card.
Goal! Rochdale 1, Port Vale 0. Calvin Andrew (Rochdale) header from the centre of the box to the bottom left corner. Assisted by Callum Camps.
Corner, Rochdale. Conceded by Louis Dodds.
Mark Marshall (Port Vale) is shown the yellow card.
Hand ball by Mark Marshall (Port Vale).
Richard Duffy (Port Vale) is shown the yellow card.
Peter Vincenti (Rochdale) is shown the yellow card.
Attempt missed. Peter Vincenti (Rochdale) header from very close range is too high.
Foul by Mark Marshall (Port Vale).
Rhys Bennett (Rochdale) wins a free kick in the defensive half.
Foul by Colin Daniel (Port Vale).
Peter Vincenti (Rochdale) wins a free kick on the left wing.
Richard Duffy (Port Vale) wins a free kick in the defensive half.
Foul by Callum Camps (Rochdale).
Louis Dodds (Port Vale) wins a free kick in the defensive half.
Foul by Tom Kennedy (Rochdale).
Attempt missed. Tommy O'Sullivan (Port Vale) right footed shot from outside the box is too high.
Substitution, Rochdale. Callum Camps replaces Andrew Cannon.