Verion of crypto_box() which doesn't allow the sender to decrypt previously sent messages
In order to verify the identity of the sender, the messages needs a signature, that the receiver can verify using the sender's public key.

After encrypting the message with crypto_box_seal(), sign it with crypto_sign().

The receiver can verify the signature and remove it with crypto_sign_open() and then decrypt the rest.

What you suggested also works, but you'll have to implement all the bits yourself.