Self-signed doesn’t protect against active MITM, as you note.
It does protect against passive attacks, in providing privacy against eavesdropping and resistance to packet/content injection on the LAN.
However, this won't help if the certificate is already forged the first time the visitor connects to the site.