Barras charges away from the Canadian defence in Edmonton
England 20 (8)
Tries: Barras 2, Shaylor
Canada 14 (0)
Tries: Foster, Moyse
Cons: McCallum 2
England booked their place in the Women's World Cup final - but only after overcoming a spirited fightback from hosts Canada in Edmonton.
Full-back Charlotte Barras looked to have sealed victory for England with her second try seven minutes from time.
But a converted try from Heather Moyse pulled Canada to within six points - and only a last-ditch tackle in injury time stopped her scoring another.
Defending champions New Zealand beat France 40-10 in the other semi-final.
"There were a few heart flutters going on there," admitted England coach Geoff Richards after his side's nervy finish.
Canada rose to the occasion and made it fantastically tough for us
England coach Geoff Richards
"We got through in the end which is what we wanted to do but it got very exciting.
"We should have been a lot, lot further ahead by half time, we created a lot of opportunities but didn't finish them off.
"Canada rose to the occasion and made it fantastically tough for us."
England skipper Jo Yapp praised the Canada scrum but backed her team to shine in the final.
"Canada have certainly improved since we last played them," said the Worcester star.
"We are slightly disappointed but we'll learn from this and we'll be ready for the final on Sunday."
Fly-half Karen Andrew added: "The Canadians were fantastic but we showed what we were made of when it mattered.
France hung in very, very well, but we kept the ball alive and scored some wonderful tries
New Zealand coach Jed Rowlands
"We showed a lot of courage and patience and we got the win in the end."
New Zealand will be favourites to make it three World Cup titles in a row when they face England in the final.
The Black Ferns, who beat England 19-9 in the 2002 final in Barcelona, made it 14 straight victories in the competition with a comprehensive victory over France.
The defending champions opened the scoring in the first minute, full-back Amiria Marsh touching down under the posts.
French number eight Delphine Plantet grabbed the first try against New Zealand in this tournament, but further touchdowns from centre Huriana Manuel and flanker Rochelle Martin gave the favourites a 20-5 lead at the break.
Further tries from Emma Jensen, who also kicked two penalties and two conversions, Anna Richards and Victoria Heighway sealed the win.
"France hung in very, very well, but we kept the ball alive and scored some wonderful tries just by supporting each other," said New Zealand coach Jed Rowlands.
England: Barras; Crawford, Staniford, Burford, Shaylor; Andrew, Yapp; Huxford, Rudge, Storie; Sutton, Lyne; Baker, Clayton, Spencer.
Replacements: Garnett, Gray, Taylor, Alphonsi, Waterman, Rae, Day.
Canada: Moyse; Gallo, Ulmer, Heemskerk, Foster; McCallum, Suguwara; Cripps, Eldridge, McDonald; Burns, Yeo; MacMahon, Florence, Murray.
Replacements: McKenzie, Lamoureux, MacDonald, Gibbs, Jaques, Dance, Marchak.