Many problems here:
The Crowdsale contract was without a single coin in the Gold token balance. Solved sending some Gold to the Crowdsale address using Metamask.
I'm calculating uint256 tokens = msg.value.mul( rate ); but msg.value is in wei. so sending 0.001 ETH is still too much money. ( 100000000000 wei multiplied by rate will be too much gold ...
Nothing stops you from creating a contract which owns the NFT. The contract may have whatever logic to manage the NFT and it may even itself be an ERC20.
There are probably also EIP standards for such, but no idea which. Or you could directly consider using a multi-type standard: https://eips.ethereum.org/EIPS/eip-1155