Firstly i would like to say i do not take credit for creating this system, but i have seen it in other mmos and it worked very well.
Secondly, it is important to understand that gold farmers exist because of demand - there will always be someone out there who wants to buy gold with their irl money.
Now to the system. Implement a special token in the cash shop that people buy for money. This token would have a price carefully set by Zenimax and it would be delivered to the player by mail. The token can be traded ONLY ONCE, after that it becomes bound.
Now the most important part, what it does. The token can be redeemed, giving either game subscription time, or cash shop credit. The gold value of the tokens would be decided by the community itself.
What are the advantages? You can buy imperial edition upgrade/cash shop items/game time with your gold you earned in-game. It allows more people to play the game, should they choose to buy their game time exclusively with gold.
The disadvantages: gold buying will still exist, but it will be done using Zenimax and the game itself as a middleman, and due to this it will destroy gold sellers.
Even if the gold sellers undercut the tokens, would you risk your account getting banned while buying from them, would you risk getting scammed? Would you risk getting your paypal/credit card stolen?