Canada were leading 19-16 with 11 minutes left, but Best got behind the pack to drive a penalty try and after the Saints flanker went close with a surge to the line in the 79th minute, Denis Fogarty piled over to seal the win for the Declan Kidney-c
oached Irish side at Infinity Park in Denver.
Earlier Denis Hurley put Ireland 5-0 ahead, and despite another try from Fergus McFadden after 13 minutes, Canada were the dominant side in the first half, with Ander Monro scoring 11 points and Phil Mack crossing the line to give the Canucks a 16-13 half-time lead.
Best made his presence felt early on when he slammed into fly-half Monro, but it was deemed a late tackle and the Canadian picked himself up to land the penalty.
Niall O'Connor, who was having an off day with his kicking, converted a penalty after the break which drew Ireland level, and then in the 61st minute Monro kicked over again for Canada's final lead, before Jonathan Sexton's penalty try put Ireland back in front for the final time.
Ireland took over in the final quarter with Devin Toner, Sean O'Brien and Chris Henry effective up front.
The Irish scrum proved too strong for the Canadians in the 69th minute with referee Matt Goddard awarding a penalty try and replacement Jonathan Sexton converting. The same player added the extras to Fogarty's try a minute from the end.
Best's Saints team-mate James Downey entered the fray in the last minute as a replacement for Connacht's Keith Matthews as Ireland closed the game out
The Ireland second string side will now face Georgia in their final group match in Colorado on Sunday while the tournament final will take place on 21 June.