Canada had led 5-0 at half-time after Tyson Beaukeboom’s try and extended their advantage further when Paige Farries raced in from her own half.
England hit back with two tries in two minutes, before Farries’ second try put Canada back in front.
” Read Also : Canada ‘extremely disappointed’ in China, defense minister says ”
But with five minutes remaining captain Sarah Hunter scored the winning try.
Two-time runners-up England next face France on Wednesday in the tournament that features the best five teams in the world, before their final match against the world’s number one ranked side New Zealand on 14 July.
England, who beat the USA 38-5 in their first match, found themselves 12-0 down to Canada after 44 minutes.
” Read Also : Huawei pushes ahead with rural internet strategy in Canada ”
But a superb scrum from five metres out saw them awarded a penalty try and a minute later, Kelly Smith rode two tackles from inside her own half to sprint away for her second try of the tournament with Emily Scarratt adding the extras.
Farries’ try put Canada into a 17-14 lead, before Hunter struck from the back of a five-metre scrum and they held on for the win.