You cannot get a free TLD such as .co.uk, .com or .net but I believe you can get .co.cc, .co.nr etc however these will hold no real value and google often doesn't index these so they are practically useless. Many web hosts, including ourselves include a free .com domain name when a plan is purchased for the whole year in advance. Hope this helps.
Godaddy is offering 1$ .com for the first year. Some other providers offer .info at cheap price for the first year.
There is no such thing as "free" You can try the guys at SearchDoman.Name - they have a "free" domain with every shared hosting plan and their hosting plans are decent and quite reliable. What's interesting about them is that they provide quite a lot of extensions for this "free" domain name. They have both gTLDs and ccTLD included with this ... and you can't find this in a lot of places.
If you want to start a blog you can do it at blogger.com for free and get a sub-domain from them. But the best way to get a free domain is to buy a web-hosting service for a year or more, most of the hosting companies have this offer.
freenom.com is offering free domain with extension: .TK / .ML / .GA / .CF / .GQ. Give it a try for testing only because I heard that they would take it back and force you to pay a "premium" price for it.
There are Largest Web Host or largest Web Hosting that offers free domain name based on condition that you invest in their web hosting. Alternatively, you may consider getting a free domain name from Usa.cc that host it elsewhere. Check the information provided. Webmasters have been using the methods/steps as mentioned just now. Cheers.