Michele Rizzo's first-half try cancelled out DTH van der Merwe's score as the Azzurri established a 13-10 lead at the break.
Canada pushed on after the interval and Matt Evans dotted down to give them an advantage before Gonzalo Garcia went over to edge Italy ahead once more.
Nathan Hirayama's penalty brought the Canucks within a score but Geldenhuys and co. held on for the win.
And after they lost 32-10 to France in their World Cup opener, the 34-year-old is convinced his side are back on track despite their set-piece woes as they prepare for a daunting clash with Ireland.
"We are happy with the end result because it keeps us on course for the next round, although we know that it will be a very tricky game against Ireland," said Geldenhuys.
"I don't really know what to say about the scrum and line-outs. The way the officials were refereeing them was different than against France in our first game."
To buy tickets for the GUINNESS PRO12 Grand Final click here. Also follow us on Facebook, join the conversation on Twitter, sign up to our YouTube channel for extensive match highlights and sign up for our newsletter for regular updates on the GUINNESS PRO12.