The Italian beat Simone Consonni (Cofidis) in the dash to the line, with a disorganised run-in coming after the GC teams had attempted to shed the sprinters on the final climb of the day, Kerby Hill.
Nizzolo received an inadvertent lead out from Lotto Soudal rider Roger Kluge around the final turn, so much so that he and Consonni gained several bike lengths over the rest of the peloton.
In the final sprint for the line, the Italian held off his compatriot and a fast-finishing Sam Bennett (Deceuninck-QuickStep) to grab the win.
Meanwhile, two-time overall winner Daryl Impey (Mitchelton-Scott) took the overall race lead, finishing second and first at the day's two intermediate sprints to take five bonus seconds and move two seconds up on Richie Porte (Trek-Segafredo).
Impey's move means that, as was the case in 2018 and 2019, the final winner will be decided by the two facing off on Willunga Hill. Porte won the stage in the past two editions, but Impey managed to hold on – albeit with larger leads than this - on both occasions.
Watch how the whole stage unfolded in the highlights video above.