There are two essential levels of on-page optimization: ‘structure' and ‘content'.
Everything that refers to the ‘structure' level is basically about making a site's structure tidy and easy to crawl. So, the main issues to be checked one by one are the following: code errors, broken links, server response code errors, duplicate content. Also, make sure that you have all your pages indexed, and your site has a robot.txt file and a site map (submitted to search engines).
The other level of on-page is about content optimization and it covers such aspects as optimizing titles, tags, meta descriptions, anchor texts and URLs for a keyword and determining the right keyword density and keyword distribution in the text.
There is of course a lot of work to be done manually, and I personally never tried it with a plugin but have been using WebSite Auditor tool to fix all on-page issues.
As for over-optimization, I think the ‘structure' part can hardly be over-optimized. On the contrary, with ‘content' on-page optimization it may eventually happen, for instance if one uses too many keywords on a page, or the same anchor texts for internal links.