Tom Pope scored against his old club as Port Vale beat Rotherham to move within two points of leaders Gillingham.
After a relatively lacklustre first half, Vale went ahead when Ryan Burge's ball fell to Louis Dodds to slot home.
Vale then doubled the lead when League Two top scorer Tom Pope broke through to clip his 21st goal of the season.
Millers substitute Kieran Agard struck to set up a nervy finish but Vale held on to take advantage of
Gillingham's defeat at home to lowly Barnet.
VIEW FROM THE DRESSING ROOM
Rotherham assistant manager Paul Raynor told BBC Radio Sheffield:
"Obviously I'm disappointed with the scoreline. Port Vale came with a game plan to hit us on the break and caused us problems doing that.
"They've had two opportunities and punished us, aside from that we didn't do enough in possession.
"We did have some possession but we failed to create any opportunities.
"We tried different changes and substitutions but it just didn't happen on the day. We just didn't have that spark."
Rotherham 21 Warrington 06 Mullins 34 O'Connell 04 Arnason 08 Taylor 10 O'Connor Booked (Agard - 42' ) 14 Bradley 15 Pringle (Cameron - 65' ) 27 Frecklington 09 Revell Booked 17 Nardiello (Odejayi - 71' ) Substitutes 01 Shearer 05 Sharps 33 Ridehalgh 31 Cameron 32 Walker 16 Odejayi 22 Agard Port Vale 01 Neal 02 Yates 05 McCombe 24 Duffy Booked 25 Chilvers 07 Loft Booked 09 Myrie-Williams (Taylor - 87' ) 18 Morsy 23 Burge 08 Dodds Booked (Andrew - 78' ) 11 Pope Booked Substitutes 12 Johnson 14 McDonald 03 Taylor 15 Shuker 21 James 16 Andrew 19 Williamson