Dutch swimmer Van Rouwendaal wins marathon gold after slog through Seine
Van Rouwendaal celebrated her second Olympic triumph, eight years after topping the podium at Rio 2016.
She bided her time before striking late in the final leg upstream against the current, zipping around a pylon at the Pont des Invalides before powering past Johnson for the lead.
She held it over the last few hundred metres, crossing the finish after a lung-busting two hours, three minutes and 34.2 seconds, 5.5 seconds ahead of Johnson. Ginevra Taddeucci won the bronze for Italy in 2:03.42.8.
The race went ahead as scheduled after organisers said the water quality in the Seine river had met acceptable thresholds.
The swimmers dived off a pontoon by the Alexandre III bridge right on schedule at 7:30 a.m. (0530 GMT) and swam furiously toward the Pont de l'Alma on a 1.67km loop to be completed six times between the two city bridges.
They flew downriver with the current but had to slog their way upriver on each of the return legs, hugging the banks to try to minimise the force of strong currents.
Johnson rounded the first lap in front, conceded the lead to Van Rouwendaal but won it back downstream on lap four.
The pair were joined by Taddeucci in a three-woman breakaway and blew out the gap to the rest of the field by more than 30 seconds before the wily Van Rouwendaal's late burst saw her take control.
Brazil's Ana Marcela Cunha, who pipped Van Rouwendaal to gold in Tokyo three years ago, finished fourth.
The men race on Friday but the completion of the women's event without any apparent incident will have been a relief for city officials who have staked much on cleaning up the urban waterway.
French authorities spent 1.4 billion euros ($1.5 billion) on upgrading the city's sewage systems, promising the river will be clean for residents to swim in by next summer.
However, water quality issues proved a headache for organisers during the triathlon events, with familiarisation sessions cancelled and the men's race postponed by 24 hours.
A familiarisation session for the marathon swimming was cancelled on Tuesday due to concerns over water pollution but another went ahead on Wednesday.