Russia's Olympic champion Alexander Legkov was distanced in the final kilometers and ended third.
"In the middle of the race, I was very tired, fell behind and was tired," Richardsson said. "I managed to save energy for the sprint and that was my luck today."
Sundby maintained his overall lead in the cross-country World Cup with 1,288 points ahead of Legkov (811 points) and Chris Andre Jespersen of Norway (739 points).
Czech skier Lukas Bauer had taken an early lead but Legkov, Sundby, Richardsson and Finland's Iivo Niskanen worked their way up.
With a little more than 10 kilometers left, Sundby, Legkov and Richardsson broke away, and in the last two kilometers, Richardsson and Sundby pulled away for a final sprint.