The 20-year-old Bouchard, who has not dropped a set in six matches, won on her sixth match point to reach her first Grand Slam final. She lost in the semifinals at this year's two previous majors, the Australian Open and French Open.
She's projected to rise to No. 7 -- the highest ranking for a Canadian woman -- by reaching Saturday's final and would go to No. 6 by winning the championship. Bouchard would also be the youngest Grand Slam champion since 19-year-old Maria Sharapova won the 2006 US Open.
"I've put in a lot of hard work and it's been kind of years in the making to me," Bouchard said. "So I believe in myself and I expect good results. I've had a good start to the season, but I expect myself to do even better than that."
In a semifinal that was delayed twice in the first set -- first by a left ankle injury to Halep, and then when a woman spectator fell ill during the tiebreaker -- Halep double-faulted on break point in the second set and then was broken again by Bouchard to give the Canadian a 4-1 lead.
Earlier, Kvitova beat fellow Czech left-hander Lucie Safarova 7-6 (6), 6-1.
No. 3-seeded Halep, who saved three match points in the seventh game and two more in the final game, appeared to be increasingly affected by her ankle injury and looked down at her feet several times after hitting shots.
"It was difficult to continue ... I felt a big pain in the moment, but then was better with the tape," Halep said. "But, still, I couldn't push anymore with my leg. My first serve was really bad after that."
On Bouchard's first match point, Halep hit an ace, but Bouchard did not appear ready to receive, and she went to speak with chair umpire Kader Nouni. But the point stood and Bouchard failed to clinch the match.
"It was a little crazy," Bouchard said. "I've never really kind of ended a match like that. Just happy I kept my focus and didn't get distracted or anything, and played well in the last game."
The tiebreaker was delayed briefly when the female spectator became ill. With Halep leading 3-2, Nouni jumped from his chair to alert security officials to the woman's illness and told both players to go to their sideline chairs.
Temperatures on Centre Court were 77 degrees F (25 degrees C) under sunny skies.
Following a delay of four minutes and after the woman was escorted from Centre Court by medical staff, the tiebreaker resumed. The woman returned to her seat later in the match after treatment.
Halep had never been past the third round at a Grand Slam until last year, when she made it to the fourth round at the US Open. Then she reached the quarterfinals at the Australian Open in January, and got to the final at the French Open last month, losing to Sharapova.
In the first semifinal, Kvitova, 24 and the only player born in the 1990s to have won a major title -- here, three years ago -- improved her record to 25-5 on the Wimbledon grass. She's made at least the quarterfinals five years in a row.
"I know how (it feels) when you hold the trophy so I really want to win my second title here and I will do everything I can," Kvitova said.
She saved her best for last: Up to 6-all in the tiebreaker, Safarova had won more total points 40-39. From there, though, Kvitova won 31 of the last 48 points in the match.
Kvitova beat Bouchard in their only meeting on hard courts.
"I find her as a very solid and talented player," Kvitova said. "She is confident in her game right now. She's moving very well ... she's playing aggressively."