On a day in which the weather conditions dampened the hoped-for fireworks in the GC battle over five categorised climbs, Narváez and Ukraine’s Mark Padun (Bahrain McLaren) battled it out after escaping from a 14-man lead group.
But Padun suffered a broken front wheel with little more than 20km of the 204km stage from Cesenatico to Cesenatico left and despite valiantly chasing down Narváez he ran out of legs.
Narváez, 23, kept the power down to extend his advantage in the closing kilometres, winning by over a minute.
"I’ve won a good stage of the Giro d’Italia," Narváez said. "Fortunately, I’m a rider who has no problem with the rain and the cold.
"It’s been a long stage but I did it! When Padun punctured, my sport director asked me to wait a little bit but with the adrenaline in the middle of the racing, I could feel I was going for the stage victory. I refuelled myself very well so I had enough to eat and drink in the last ten kilometres.
"It’s been a difficult year. We’ve stayed at home for a long time so I really enjoy the Giro. It’s a really nice race.”
It was a day of consolidation for Portugal’s Joao Almeida (Deceuninck-Quickstep) who retained the leader’s pink jersey, preserving his 34-second lead over Wilco Kelderman (Sunweb).
The race leader’s group finished eight minutes and 26 seconds behind Narváez.
After the bitter disappointment of losing team leader Geraint Thomas to a fractured hip sustained in the third stage, British team Ineos Grenadiers have bounced back in style.
Filippo Ganna followed up his stage one time trial success with victory on stage five and Narváez produced a superb ride on a miserably cold and wet day in the northern Apennines.
With the peloton giving up the chase on the final climb of the day, Narváez and Padun looked set for a head-to-head time trial to the finish on the Adriatic coast.
But Padun’s misfortune turned Narváez's first Grand Tour stage victory into a procession as he covered the last 10km in just under 13 minutes at an average speed of 46.8kmh.
Friday’s stage is a more or less flat 192km route from Cervia to Monselice and should be another day for the sprinters.