How to update owner for contacts based on owner for account?

How to update owner for contacts based on owner for account?

I am trying to automatically assign the owner for Contact based on Account owner. Every Contact is related to an account as we are explicitly choosing this via a lookup field during add. When the account owner changes, we want the contact owner to change as well. Basically it's a simple direct relationship. The accounts might change hands every so often so all related data should be available to new owner.

This should be very simple but I cant figure how to do it. we have thousands of accounts and contacts so data can get quickly hidden for user if we don't assign the contacts/tasks correctly. Have tried workflow, rules assignment etc. We don't want to use custom functions or territory rules for this.  Help is appreciated.