Joe Sayers hit his second LV= County Championship century of the season as Yorkshire built steadily on a position of strength at Taunton.
The visitors grabbed a first-innings lead of 112 when Matthew Hoggard took the last Somerset wicket without addition to their overnight score of 326, with the seamer finishing with 5-82.
Somerset looked to be fighting back when first-innings centurion Jacques Rudolph fell for a second-ball duck and Anthony McGrath soon followed to make it 58 for two.
But Sayers, who was dropped on 30, went on to a hundred off 208 balls, with 15 fours.
Adam Lyth was also given a life on three and progressed to 71 before Yorkshire closed on 329 for five, with a lead of 441.
Sayers was out to the last ball of the day for 152 and Jonathan Bairstow ended 54 not out.
The dropped catches cost Somerset dearly as they could have had their opponents 62 for four.
Firstly James Hildreth spilled a straightforward chance at gully off Andy Caddick to reprieve Sayers and then Justin Langer failed to grab an edge offered by Lyth to slip off Arul Suppiah.
McGrath had been spilled by Suppiah at point on 25, but failed to add to that tally before being bowled by Willoughby, who had also removed Rudolph caught at second slip.
Somerset's inept fielding allowed Yorkshire to lunch at 67 for two and the afternoon session belonged to Sayers and Lyth, who gave no more chances.
Sayers reached fifty off 142 balls, with eight fours and Lyth followed, his half-century coming off 84 balls, with a six and six fours.
The partnership of 122 in 37 overs was finally broken by David Stiff, who added to his four first-innings victims by having Lyth caught behind off a thin edge as he attempted a pull shot.
Tea was taken at 189 for three as the first rain of the match fell.
But it quickly cleared and Yorkshire progressed to 221 before Adam Gale was well caught low down by Marcus Trescothick at backward point off Alfonso Thomas for 16.
Yorkshire had moved on sedately, but Sayers and Bairstow increased the tempo in the closing overs to set up a declaration in the morning, the latter racing to fifty of 52 balls, with nine fours.
Sayers reached his 150 shortly before the close, having faced 272 balls and extended his boundary count to a six and 20 fours.
It was not a spectacular innings, but a vital one for his side as they look to end a run of 17 first-class games without a victory.
He was bowled by Zander de Bruyn off the first ball of the final over of the day to end play.
Want to start playing cricket - or re-kindle your playing days?
Get all the latest features, news and action
All the contact information and links to help you buy match tickets
Contact ECB by email, phone or fax - or feedback via ecb.co.uk
Want to watch some cricket? Find the matches you want to see
Get our news and scores feeds via RSS to your desktop or mobile
Enjoy our blogs, right across the cricketing spectrum, from players to volunteers
ECB publications for you to download as PDFs, plus other resources
Official site of the England and Wales Cricket Board