Free web hosting is a question of exchange. There are no web hosting companies out there who are prepared to offer a domain name, unlimited bandwidth, and free email addresses for no ongoing monthly costs. Whenever you sign yourself up to a free web hosting service, you will be paying for your website in other ways: for example, by having a URL that is a sub-domain of their name, or by hosting adverts on your site.
Having said that, if you are prepared to shop around it is possible to get a lot for your (lack of) money. If you are prepared to accept life in a sub-domain, without email addresses attached, and want simple and easy functionality without too many widgets then many sites will be only too happy to host you. More functionality can be traded for adverts appearing on your site, but your site will never be able to stream live audio or video and you will get into trouble if it becomes very popular.
If you are new to website building, it is a good idea to sign up for a free website while you get the hang of the process. If your website grows too fast, shop around for a paid service that offers free migration.