From UX point of view
and try to submit the contact form with all fields empty
[...]
If they only want to enter a message and leave the other fields empty, why should I care?
You and your friend are not talking about the same scenarios.
Letting the user submit all fields empty on a contact form is a mistake, because there are no valid cases where the customer would be contacting you while saying nothing. If he has nothing to say, why is he submitting a form?
The only possible scenario where the customer actually submits an empty contact form is that he pressed Enter by mistake when the focus was on a single-line text field (or he pressed by mistake the submit button).
Validation, at this level, at least client-side one, is a must-have and has a specific purpose. If a customer is submitting an empty contact form, he should be notified that something is wrong and the submission should be prevented.
Making all field mandatory on a contact form is not a solution neither. When I want to tell someone that there is a typo on the home page of their website, I don't want to think about the subject of the message, I don't want to give my email address, I don't want to give my phone number, and I don't want to specify the name of my girlfriend, because, damn it, all I want is to tell is that there is a typo.
From technical point of view
Processing submitted contact forms is a complicated task which requires lots of time. Filtering technically the submissions you don't need improves productivity of the person in charge of reading those messages.
There is no need to display the empty messages in the administration panel. I would even say that messages with a length inferior to, say, ten characters, are useless, and shouldn't be displayed neither.
On the other hand, doing validation response properly is a difficult task: you have to implement validation itself both server-side and optionally client-side, and respond properly with a (often) localized error message or a cleaner, more UX-oriented way.
For the sake of simplicity and given the specificity of the case, I wouldn't do any server-side validation response, only client-side. If the user with no JavaScript wants to submit an empty contact form, that's fine: administrators will never see those submissions, but the customer will be convinced that the form was submitted successfully. This case is too specific (i.e. the user doesn't have JavaScript, makes a mistake when submitting a form and this mistake doesn't affect the system) to handle specifically.