Chris Tremlett took his 400th first-class wicket but Derbyshire maintained control on day two of their LV= County Championship match against Surrey at Derby.
Tremlett took 5-95 as the hosts were bowled out for 452 before reducing Surrey to 35-1 at the close of play, the away side needing another 268 to avoid the follow-on.
The second-wicket stand of Shivnarine Chanderpaul (129) and Wayne Madsen (152) was finally brought to an end on 265, but wicket-keeper Richard Johnson equalled his career-best 72 as the lower order added some more runs.
Madsen, unbeaten on 92 overnight, soon reached his fourth century against the Surrey bowling attack as it took more than an hour before the visitors finally broke through.
The long-awaited wicket came when Chanderpaul was surprised by a Stuart Meaker ball that looped to gully where Ricky Ponting dived forward to take the catch.
Although Wes Durston went for just 6, the home side added 104 runs in the morning session and Madsen reached 150 just before lunch.
But the new ball brought Surrey more success after the interval, with Tremlett getting some lift to have Ben Slater caught behind for 7 on his Championship debut before Meaker bowled Madsen.
Johnson continued Derbyshire's charge as he passed his half-century before trying to steer Tremlett to the third man boundary but only finding the hands of Gary Wilson.
David Wainwright added 21 in the meantime and Johnson and Mark Footitt (8) increased Surrey's frustration by putting on 37 for the last wicket.
Surrey's reply started badly when Rory Burns (4) was run out from a direct hit by Madsen in the first over to leave Arun Harinath (13 not out) and Vikram Solanki (10no) at the crease.