Personally I like Jira a lot (and it's free for up to 10 users), especially as it is easy to integrate with Confluence for knowledge retaining. Asana is nice for absolute project newbies, but is less ideal for multiple projects and more complex requirements. MS projects is utter garbage.
If you want something self hosted and free it's much more difficult. I tried basically all of them - Open Project, Leantime, Taiga, Redmine and a few more. For my private projects I prefer Redmine, it looks old as fuck, but can be customised heavily and is none of these "pseudofree" systems that do only make the basic version free but make you pay for otherwise essential features (custom fields!).