The loss - their fourth in seven games - left Canterbury outside the Premiership top four and in danger of missing the playoffs for the second season in a row.
Otago remained third in the Championship courtesy of a hard-fought victory that had appeared unlikely early in the match.
After a moment's silence for Sean Wainui, Otago made all of the early play but soon found themselves in an imposing hole.
Although much of the opening quarter was spent inside the Canterbury 22, the hosts failed to convert that field position into points, with the usually reliable Ioane missing a couple of penalty attempts.
And after soaking up all that pressure it was Canterbury who found the front as sevens star Sam Dickson made an immediate impact on debut, coming off the back of a scrum to score the game's first try.
Buoyed by their lead, Manasa Mataele's intercept sparked a brilliant move that saw Canterbury cut through the hosts and Fergus Burke dot down.
Otago found a much-needed response before halftime, when Sam Fischli's lineout steal was quickly turned into a Freedom Vahaakolo try, cutting the deficit to 17-10 at the break.
Like they did in the opening spell, Otago began the second with an intensity unmatched by their opponents, and this time Ioane was successful from the tee with three penalties putting his side ahead.
But falling behind jolted Canterbury to life and their best passage of second-half play saw Harford steal back the lead, before Ioane played the late hero.
Otago 22 (F Vahaakolo try; J Ioane con, 5 pens)
Canterbury 20 (S Dickson, F Burke tries; F Burke 2 cons, pen, A Harford pen)
Halftime: 10-17