The visitors had won their last six games to storm to the top of the Championship, but they were held by the Millers, with former North End man Jordan Hugill netting for the home side.
Liam Lindsay ensured Preston left with a point with an equaliser on the stroke of half-time.
The first clear-cut chance of the game fell to Preston's Duane Holmes, who latched on to a clever corner from Alan Browne but saw his goal-bound effort blocked.
After an even opening Preston began to pin Rotherham in their own half and Holmes created a great chance for Milutin Osmajic, but the big striker's header was clawed out by a strong save from Viktor Johansson.
Rotherham took the lead against the run of play after 35 minutes thanks to Hugill's sensational solo strike.
He held off a challenge strongly and then drove into space before curling an effort into the top corner from 25 yards.
Lindsay almost replied straight away, but Tyler Blackett was wise to his flicked header and managed to stop it from crossing the line.
Browne came close with a guided header from Robbie Brady's corner but it drifted just wide of a post.
Preston's set-pieces were causing real problems for the Millers and they were made to pay after 45 minutes, with Brady's whipped delivery powered home by Lindsay.
Rotherham were forced into a change for the second half, Cameron Humphreys having picked up an injury, and, with no recognised central defenders on the bench, Cohen Bramall had to fill in.
Holmes led the first serious attack of the second period but fired over from distance.
Preston were not creating the chances boss Ryan Lowe would have wanted so he made a triple change for the final 20 minutes.
They threatened through Ryan Ledson, who took aim from the edge of the box but saw low effort palmed out by Johansson, with the rebound from Osmajic blocked.
One of the Preston changes, Liam Millar, was proving lively and his neat footwork opened up a shooting chance, but he fired well over the top.