NameCheap is a great one. Also you can usually Google around and find a Godaddy coupon for a cheap transfer in and sometimes even discount renewals.
I'd definitely recommend keeping your hosting separate from your domain registrar. Let the hosting companies host websites and the registrars register domains. I've yet to see an all-in-one solution that is both the best registrar and best web host.
NearlyFreeSpeech only offers .net .org and .com I believe and you have to pay for extras that some other places give for free (such as dns) if you use those but they have a very nice TOS and general behavior.