Bluehost is top rated but they deleted/lost my site 3 times so I can't recommend them.
I use GoDaddy now which is cheaper and I backup more often. It is hard to find everything on the godaddy site but all the features most people will need are there like FTP, and databases.
Its easiest to set up the hosting with the same place you get the domain from.