There is only one way certain way to prove ownership, and that is by giving your PRIVATE KEY to that someone.
If we're strictly talking about
certain way to prove ownership, then even giving private key isn't enough. There are many cases where user tricked into download fake/malicious wallet where the theft could use it to prove ownership.
If we are strictly talking about
ownership (in terms of: i created the private key, it belongs to me), there is not a single method to absolutely be sure (in a bulletproof way).
A private key is not something one has, but something one knows. That's a big difference.
Proving ownership of a hardware token (i.e. a hardware token for pgp signing for example) can be done by signing messages easily.
But simply proving ownership of something you know is itself not possible (very strictly talking).
Information (something you know) can be duplicated. Hardware tokens (something you have) can not. Or.. at least they should not be able to be duplicated.
However, i think this is going way too far.
As per OP's title the question is how to prove that an address belongs to you. And regarding this, anything is fine. A signed messages (containing a random token + user not blatantly stupid to get phished) is the best way.
The question was not how to prove that one is the ONLY one who knows this private key. That's simply not possible.