South African champion Impey, winner of stage four and seven seconds off the lead before the stage, benefited from overnight leader Patrick Bevin (CCC Team) being unable to keep pace with the peloton, owing to the injuries he suffered on stage five.
But the Mitchelton-Scott man also rode superbly to ride to third place on the sixth and final stage, behind Wout Poels (Team Sky) in second and the King of Willunga Porte in first.
It was Porte's sixth victory in as many years atop the climb and he finished second overall on GC, the fourth time in five years the 2017 winner and new Trek-Segafredo signing has done so.
The stage was Mat Hayman's final as a professional, the 2016 Paris-Roubaix winner bowing out at his home race.
How it happened
Seven riders clubbed together to form a breakaway in the first throes of the 151km stage. Brit Alex Dowsett (Katusha-Alpecin) teamed up with Thomas de Gendt (Lotto-Soudal), Danny van Poppel (Team Jumbo-Visma), Jasha Sütterlin (Movistar), Gediminas Bagdonas (AG2R La Mondiale), Lukas Pöstlberger (Bora-Hansgrohe) and Nicolas White (UniSA-Australia).
They stretched out a typical length advantage to the peloton but they were never going to allow them to go the full distance given the importance of the stage. As such, with 25km to go and the first ascent of Willunga Hill approaching, only Van Poppel and White remained with Team Sky working hard behind.
Meanwhile, Bevin was seen dropping back through the peloton at an alarming rate on the climb, relinquishing his lead on the final day a a result of the crash he suffered the previous day. It meant that Impey was the virtual race leader.
Up front, Kenny Elissonde of Team Sky attacked from the front of the peloton, and he was soon joined by teammate and leader Poels. Lone leader White was passed, and the Sky duo built a sizeable lead as they crested Willunga Hill ahead of the peloton.
The duo, however, were sucked back into the peloton but their attack ignited more moves. There was 20km to race when Héctor Carretero (Movistar) then jumped clear, eventually being joined by Bora-Hansgrohe's Daniel Oss and Tomasz Marczyński (Lotto-Soudal).
Climbers and general classification riders in the reduced peloton, however, instructed their teams not to allow the trio to stay away and with seven kilometres to go they were caught, despite a renewed attack by Carretero.
As the riders came within a kilometre of ascending the 3.6km Willunga Hill climb, Luis Leon Sanchez's Movistar took over proceedings at the front of the peloton, aware that the Spaniard was only nine seconds adrift of Impey who was also well-positioned at the head of the race.
The opening kilometre of the 7.1 percent average gradient climb was a war of attrition, with no one making any moves as Dylan van Baarle of Team Sky set the pace.
Elissonde kept the tempo high as the Dutchman peeled off, and the Frenchman then went by himself, catching other riders unaware. As everyone else remained static, Poels surged off the front again, joining his teammate Elissonde who slipstreamed the Dutch climber up the hill.
At 1.3km to go, Porte's expected attack came and he was joined immediately by Chris Hamilton (Team Sunweb) and Michael Woods (EF Education-First). At the flamme rouge he passed Poels, though the Sky rider quickly jumped on his back wheel and kept with him.
Australian Porte grimaced as he tried to ride Poels off his wheel. At 500m, he eventually unshackled Poels from him and the Tasmanian roared to the finish line, flanked by his home supporters. Knowing he needed to win by 10 seconds to beat Impey, he got up out of his saddle, stretching every sinew to try and unseat the South African at the summit of the GC.
But even though Porte was able to win atop the climb for the sixth successive time, Impey rolled home just a few metres behind Porte and Poels, securing him his second consecutive GC triumph in the race.
Tour Down Under 2019, stage six: McLaren Vale > Willunga Hill (151.5km)
1. Richie Porte (Aus) Trek-Segafredo in 3-30-14
2. Wout Poels (Ned) Team Sky
3. Daryl Impey (RSA) Mitchelton-Scott, both at same time
4. Rohan Dennis (Aus) Bahrain-Merida, at 3secs
5. Luis Leon Sanchez (Esp) Astana
6. Chris Hamilton (Aus) Team Sunweb, both at 6secs
7. Michael Woods (Cad) Team Sunweb at 15 secs
8. Diego Ulissi (Ita) UAE-Team Emirates
9. Tom-Jelte Slagter (Ned) Dimension Data
10. Dries Devenyns (Bel) Deceuninck-Quick-Step, all at 17secs.
Final general classification after six stages
1. Daryl Impey (RSA) Mitchelton-Scott, in 20:20.42
2. Richie Porte (Aus) Trek-Segafredo, at 13secs
3. Wout Poels (Ned) Team Sky, at 17secs
4. Luis Leon Sanchez (Esp) Astana, at 19secs
5. Rohan Dennis (Aus) Bahrain-Merida, at 26secs
6. Chris Hamilton (Aus) Team Sunweb, at 33secs
7. Michael Woods (Cad) Team Sunweb, at 38secs
8. Ruben Guerreiro (Por) Katusha-Alpecin
9. Diego Ulissi (Ita) UAE-Team Emirates
10. Dries Devenyns (Bel) Deceuninck-Quick-Step, all at 40secs
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