Let's start with the easy one - the little ugly duck - which is freeware. Freeware only means that the software is available for free (i-e it costs nothing). It does not state anything about your freedom to use in different ways, your freedom to access its source and make something different of it. So a freeware can be a non-free (as in freedom) software.
Free software on the other side have the aim to tell that both users and developers have the complete freedom about the usage or modification of the software, much like in a free speech (libre). Free software should not have any restriction, it is all about freedom.
Open source comes close to the definition of free software, but it lacks this idea of pure freedom and some open source license are not compatible with this idea. To put in other words, open source is more of a technical definition of how the software can be modified or verified, whereas free software is more of a social/philosophical definition where also the freedom of the end-user is included.
That when I come to like the French language really much. A freeware is a “gratuiciel” and free software are “logiciels libres”. If the French language would have been the computer official language back in the nineties, the open source movement would probably not have started.
Personally, I do prefer the term free software (logiciels libres), but I am also often using the term open source or the mixed one which is free and open source software (FOSS).