Conditions on Otago Harbour were rough and a strong northeast wind was pushing the paddlers backwards.
Richards (30) fought to hold out Queenstown paddleboarders Paul van der Kaag and Warren Ross, who were on his tail in the last 300m.
Willing him on from the bank was former Olympic Games synchronised swimmer Nina Daniels.
"My arms and shoulders were burning but I had to grin and bear it, because Nina was watching from the bank," he said.
The bigger Queenstown paddlers had control with the wind behind them and looked to have shut Richards out of the race.
But they went wide at the turn and Richards saw the chance of an opening to get in front.
He knew it would be a battle of minds into the headwind over the last 1000m.
Richards won in a time of 13min, Van der Kaag finished in 13min 20sec and Ross in 13min 37sec.
Richards, who came to Dunedin from the Isle of Wight three years ago, also won the gold medal in the 500m.
Van der Kaag (48) won the gold medal in the men's aged 40 to 45 grade in both the 2km and 500m.
Bevan Haworth won both the 500m and 2km gold medals in the men's aged 50 to 59 grade. His 2km time was 14min 28sec.
The first woman home was Ali Chetwin (Dunedin) in 28min 48sec, with Diane Noone in second place.