Points leader Rovanpera rattled off two stage wins from the four afternoon tests to transform a 18.4-second deficit into a 5.7s margin over Evans heading into Sunday’s final five stages.
Rovanpera started the day 13.6s behind with Evans growing that advantage after winning two of the three morning stages.
But Rovanpera steadily began to nibble away at the gap across the afternoon, before mastering tricky wet conditions on the penultimate stage to grab the lead.
Toyota’s Takamoto Katsuta ended the day in third 1m50.1s adrift after leapfrogging Hyundai’s Dani Sordo during the morning, but only 5.7s separated the pair.
Thierry Neuville brought himself back into podium contention in fifth following a strong afternoon display.
Craig Breen reached service as the top M-Sport Ford runner in sixth after moving ahead of team-mate Pierre Louis-Loubet.
Hyundai’s Ott Tanak and M-Sport's Adrien Fourmaux completed the Rally1 field, following retirements for Gus Greensmith, Sebastien Ogier and Sebastien Loeb.
Persistent rain fell as the afternoon loop began to add a further variable to the already tricky gravel stages.
Rovanpera adjusted to the slippery conditions the best as the Finn claimed his fourth stage win of the event on Stage 13, taking 1.9s out of Evans’s lead.
Katsuta set the third fastest time to maintain his strong start to the day to increase his overall margin over Sordo in the battle for third.
After losing almost a minute to a puncture in the morning, Greensmith’s day took a turn for the worse when he clipped a bank with the right rear of his Puma.
The impact took a chunk out of the wheel rim and caused a slow puncture and the Briton retired due to damaged right-rear suspension.
Rovanpera stepped up his pursuit of Evans in the next test, producing a committed run that took a significant 6.6s out of his team-mate's lead, bringing the deficit to 9.9s.
Once again Katsuta emerged as the best of the rest although some 14.7s slower than the outright pace, but crucially faster than the chasing Hyundais of Sordo and Neuville.
The complexion of the rally changed when crews tackled the second pass of the 37.24km Amarante test.
Rain had began falling but worsened as the stage progressed leaving Evans and Rovanpera to face desperately challenging conditions.
Rovanpera was into the stage before Evans and managed to take 13.9s out of his rival, which was enough to move into 4s lead.
Evans revealed at the stage end that he had a close run in with a tree that hampered his run.
"For sure, Kalle has been strong," said Evans. "I think we had the worst of it in here and it was raining very heavily for us. I had a very close moment with a tree near the start, which wasn't nice, so that didn't help."
While there was plenty of attention on the rally lead change, Neuville stunned the field with a blistering time to win the stage by 16.9s from Rovanpera, hauling himself into the fight for the final podium spot.
This was helped by Sordo and Katsuta scrambling for grip, posting times more than 30s slower than Neuville.
Elsewhere, Breen picked up some damage to a tyre while his M-Sport team-mate Loubet had to battle through the rain without the use of his windscreen wipers.
Rovanpera edged a further 1.7s clear of Evans on the end of day super special held on slippery cobbled stoned roads on Porto sea front, while Sordo closed in on Katsuta for third.
Results after stage 16:
Kalle Rovanperä |
|Toyota GR Yaris Rally1|
Elfyn Evans |
|Toyota GR Yaris Rally1||5.700|
Takamoto Katsuta |
|Toyota GR Yaris Rally1||1'50.100|
Dani Sordo |
|Hyundai i20 N Rally1||1'55.800|
Thierry Neuville |
|Hyundai i20 N Rally1||2'25.900|
Craig Breen |
|Ford Puma Rally1||4'00.400|
Pierre-Louis Loubet |
|Ford Puma Rally1||4'14.700|
Ott Tanak |
|Hyundai i20 N Rally1||4'40.900|
Adrien Fourmaux |
|Ford Puma Rally1||7'04.300|
Teemu Suninen |
|Hyundai i20 N Rally2||10'08.500|
|View full results|