Overall leader Isaac del Toro of Mexico remains 43 seconds ahead of Richard Carapaz of Ecuador while Briton Simon Yates is third at one minute and 21 seconds after losing 22 seconds on the day.
EF rider Carapaz attacked late on in the race and Del Toro again proved he could keep up.
Former Giro champion Carapaz was satisfied with his day's work.
"I think we were all very tired, and in the end I just had to give it a try. But I think it was a good stage. I think we can make it with Del Toro so I’ve got to be happy with my performance."
Visma rider Simon Yates was unable to follow the pair and said he would be reviewing the situation ahead of Saturday's blockbuster, appearing annoyed at the line.
"We’ll see how the legs are. The legs are good today so hoping for the same tomorrow and that I can try something," said the pure climber who may yet take the title.
His twin brother Adam Yates took it easy on Friday and will help Sherpa UAE teammate Del Toro on the penultimate day.
Prodhomme's face was twisted with the effort as he broke away from a large escape group.
"I've waited a long time for a win. I won my first race a week ago and now I win here in the Giro d'Italia."
On a scenic route with the temperature tipping 30C (86F) the peloton set a medium pace, keeping their powder dry for a title showdown at Sestriere ski resort Saturday.
Stage 20 ends with a gruelling 20km climb up the Colle delle Finestre - the moment when the winner is likely to emerge.
For now Del Toro, who took the lead on stage nine in Siena, looks to have the legs to complete the job.
Sunday's final stage will be a triumphant roll into Rome that passes through the Vatican City with hoards of Mexicans expected.