Sagan, who was also fastest on Friday, edged out Thibaut Pinot (FDJ) and Primoz Roglic (LottoNL-Jumbo) on the narrow, cobbled climb to the finish of the 210-kilometer (130-mile) ride from Rieti to Fermo
BORA-hansgrohe's Sagan worked his way back up to the front bunch with two kilometers left and easily won out of a group made up largely of riders targeting overall victory.
"It was crazy. It looked like there was no tomorrow. The peloton went so fast," Sagan said. "I'm very happy with my win today. It wouldn't have happened without (Rafal) Majka, who pulled a lot.
"After the climbers attacked, luckily there was a bit of flat road that allowed me to come across and sprint for the win."
Several riders were dropped on the short, steep climbs in the second half of the route.
Quintana (Movistar) stretched his lead slightly and is 50 seconds ahead of Pinot, who moved into second after Adam Yates (Orica-Scott) abandoned due to illness. Australia's Rohan Dennis (BMC) sits in third place overall.
The penultimate stage is a 168km ride from Ascoli Piceno to Civitanova Marche. The route has been altered because of the condition of some roads and will now pass through Pollenza, where riders face the final categorized climb of the race.