Yates won the stage and picked up another 28 seconds on Bernal, but the Colombian still leads by 2-39 to Damiano Caruso in second, with Yates still third overall at 2-49.
Speaking after the stage, Bernal said: “I felt really good, I did really good numbers, I did a really good climb.
“Of course Yates was the best today and chapeau to him, but I’m really happy with my condition.”
Bernal showed the first cracks in year’s Giro on stage 17 to Sega di Ala, where he lost around 50 seconds to Yates, but after riding conservatively on the final climb on stage 19 he minimised his losses to Yates and gained more time on Caruso (Bahrain Victorious).
There are just two stages remaining of the 2021 Giro, with a mountain stage on day 20 before the final time trial in Milan.
With more than two minutes to his nearest rival, Bernal is confident he has enough time to win the Giro after the TT.
On the final mountain stage he said: “I hope to have the same legs as today. Today felt really good and tomorrow with the altitude I hope to have the same feelings as today and just try to manage the gap I have with the two guys who are on the podium. Hopefully I will be in pink tomorrow as well.
“I’m really happy. I think I have some time to play with, so I just want to have legs for the time trial and everything should be okay if I’m feeling good.”
Thank you for reading 20 articles this month* Join now for unlimited access
Enjoy your first month for just £1 / $1 / €1
*Read 5 free articles per month without a subscription
Join now for unlimited access
Try first month for just £1 / $1 / €1