Somerset had resumed on 7-295 and were all out for 310, with Archie Vaughan unbeaten on 66 as O'Neill, who had taken both openers on Friday, mowed through the visitors' tail.
The leaders also found batting difficult on their Trent Bridge wicket, their captain Haseeb Hameed removed for a four-ball duck and fellow opener Ben Slater trapped lbw for one.
Nottinghamshire got to 193 all out, with O'Neill contributing 21, and Somerset were 2-73 at the close, with O'Neill still awaiting his first second-innings victim after five overs.
Jordan Cox celebrated his call into the England squad for the second Test against New Zealand by striking a double century before Essex enforced the follow-on to take control of their clash with Leicestershire at Grace Road.
Essex resumed at 5-342, and Cox added 20 to his overnight 184 before he was caught behind off Josh Davey, having hit 26 fours and two sixes from his 201-ball innings.
After eventually being all out for 401, Rehan Ahmed finishing with four wickets, Essex soon made a breakthrough with the ball.
Simon Harmer and Charlie Bennett both took three wickets as Leicestershire were 187 all out, Nick Kelly making 78, before reaching 51 without loss in their second innings, still trailing by 163.
In Division Two, leaders Durham saw England captain Ben Stokes back training at the Riverside, where the home side forced Derbyshire to follow-on.
Durham had resumed at 7-302, with Ben Raine's determined 63 pushing them on to 377 all out. Ben Aitchison finished with five for 74.
The hosts then ripped through Derbyshire's batters inside 30 overs, crumbling to 118 all out, Aussie Caleb Jewell offering some resistance with 37. Kasey Aldridge took his own five-for, while Raine also claimed three wickets.
Matthew Potts then picked up four for 32 in 11 overs to leave the visitors 4-99 at stumps, 160 behind, with opener Harry Came 48 not out.