To add a bit of context to your question, all domain names are owned by registrars. These companies then allow you to rent the domain names. This means that they then point the traffic looking for your domain name to your desired location (your website). These registrars require servers to do this and that is why you must pay for them.
Free domains will often not be giving you a full domain but actually giving you a sub-domain (www.yourBusiness.000webhostapp.com). This not only advertises their business but also prevents them from needing to have multiple domain names.
Many hosting and registrar companies will also offer other payed services, such as WHOIS protection, which hides your personal details from whois.com lookup's.
This is all more complex than I have explained, but I hope this gives you insight into why payment is needed for several of these services.
As for recommended hosts, I always personally recommend TSOHOST due to the good up-time and great customer service.
"To add a bit of context to your question, all domain names are owned by registrars. These companies then allow you to rent the domain names."
That's not true - domain name registrars don't 'own' domain names - they simply register them for other people. When someone registers a name, that individual owns the name for the period of its registration, and has an automatic right to renew the registration over and over again on payment of a renewal fee. Courts have ruled that domain names are tangible assets - owned by the people who register them with a domain name registrar.
You don't 'rent' a name from a registrar, you pay a registration fee.
As for hosting, I have been involved in web design and hosting for many years, and have found Heart Internet to be a consistently good and reliable domain name registrar and award winning hosting company. There are other good web hosts - find one that suits you by reading reviews.