I have a new profile I created for one particular user that needs access to just a couple of fields on the account and contact tables. I was able to restrict the user from seeing other fields on the account and contact table but when they log in to the workbench, they can query objects like 'EmailMessage' that I do not want them to access. Is there a way to ONLY allow them to have access to the account and contact table and NOT any other tables?
You won't be able to control access to some objects like EmailMessage, Attachments, and many more underpinning objects related to the Account and Contact that are tightly coupled like a master-detail relationship. This is just a system limitation.
For the most part, make sure you do not give them access via Modify all or View All and if they are still able to query few more standard objects there is not much you can do about it.
This also holds true if you have a detail object in a master-detail relationship to Accounts and Contacts. You cannot control sharing access for them.