I've helped quite a few websites recover from Penguin, here's what we've done.
1. Reduce onsite variables
Often times the clients content sounded like it was written for a robot (which it was!), keyword densities of 15%, every H tag perfectly optimized and only anchor text links internally. The first step is making the website more user friendly by reducing the keyword density to less than 5% on each page. Next step is removing the excess H tags and bolds, strongs, etc. Reducing it to one usage is fine.
2. Above the fold
Most people are completely overlooking this and many clients I've consulted with that were hit the hardest were those sites that had large advertisements, call to actions, lead gens, or images that were sitewide. By reducing the sitewide above the fold areas, and bringing the content up to the top, many clients began to see immediate recovery.
3. Off site cleanup
Most clients weren't subtle about their linkbuilding efforts. We've all made this mistake at some point in our SEO career. Building only perfectly optimized anchor text links and have zero anchor text diversity. Now, you need to build in a layer of diversity like never before. If you have over optimized your anchor texts, it's time to try and change out those legacy links and/or begin a "unoptimized" link building campaign. This means linking with anchor texts like "click here", find out more info, etc. Also naked URL links are key. Also don't forget to link the rest of your website as well. Not only the homepage.