The result puts Otago top of the standings, but Canterbury will end the round at the summit if they beat Northland in Whangārei on Sunday.
Otago made a blistering start when halfback Dylan Pledger scored inside two minutes, finishing off an attack that started on the halfway line.
Harbour battled back into the contest and were rewarded when Ben Brownlee crashed over in the corner. The visitors then hit the lead with a Mark Tele’a intercept.
Despite Harbour dominating, Otago were the next to score through No 8 Christian Lio-Willie and hooker Liam Coltman, in his 100th match for the province, grabbed a try just before the break to give the hosts a 21-14 halftime lead.
There was drama at the start of the second half with referee Jackson Henshaw suffering a suspected calf injury and being replaced by Fraser Hannon.
The match turned into an arm-wrestle, but it was Otago who broke the stalemate when Lucas Casey found space on the wing to score and Pledger got his second try moments later.
In the final 10 minutes, back-to-back tries to Harbour wings Sofai Notoa-Tipo and Tom Barham ensured the match would have a thrilling finish, but Otago sealed the result with two penalty goals.
Otago will round out their season next week away to Auckland, while Harbour, who have secured the wooden spoon, will host Southland on Friday.
Otago are the fifth side to hold the Shield this season, which started in the hands of Taranaki, before moving to Waikato, Southland, Canterbury and then Dunedin. It equals the record for the most shield changes in a single season – dating back to 1950.
Otago 41 (Dylan Pledger 2, Christian Lio-Willie, Liam Coltman, Lucas Casey tries; Cam Millar 5 cons; 2 pens)
North Harbour 26 (Ben Brownlee, Mark Tele’a, Sofai Notoa-Tipo, Tom Barham tries; Cameron Howell 2 cons)
HT: 21-14
Ben Francis is an Auckland-based reporter for the New Zealand Herald who covers breaking sports news.