Jankovic will play Nadia Petrova on Sunday for the title and will be shooting for her second tournament win in two weeks. Jankovic won the China Open last week and will be the latest No. 1 when the new WTA Tour rankings come out Monday.
"It was a tough match, it's always tough to play Venus,'' said the 23-year-old Serb, who now holds a 5-3 career edge over Williams.
Petrova moved within one win of capturing her second Porsche Grand Prix title when she beat Victoria Azarenka of Belarus 6-4, 6-4 in the other semifinal match.
Jankovic has a broken toe nail on her left foot and got two shots of painkillers to be able to play.
"I was really fortunate to play,'' Jankovic said. "I got two injections, they hurt so much I was screaming.''
Williams, seeded-sixth, was playing in her first Stuttgart tournament in 10 years.
"She played well and I made too many errors,'' Williams said. "But I played some good points, too. It was a good competition.''
The American used her third set point to win the first when Jankovic hit a backhand long. Jankovic had also wasted a set point in the tiebreaker.
Jankovic squandered a 3-1 lead in the second set, wasted two break points at 3-3, but took the set with the help of a challenge. She did one of her trademark splits to get a ball back down the line.
It was called out but Jankovic challenged the call and the replay showed that the ball had hit the line and Jankovic tied the match.
The Serb broke serve for a 2-0 lead in the third, staved off a break point in the next game, two more in the fifth game and held for 5-2. An error by Williams gave Jankovic two match points. She wasted one with an error of her own, but Williams than put a forehand long.
"I wanted it more in the third maybe,'' Jankovic said. "I'm happy to get through this match. It's a good win for me.''
In a match between two unseeded players, Petrova got early breaks in both sets against the 19-year-old Azarenka, who had upset Olympic champion Elena Dementieva in the quarterfinals.
"I am so excited to be back in the final,'' said Petrova, a Russian who won the tournament in 2006. "The main thing for me is to stay focused, then everything goes well for me.''
Petrova is looking for her second title of the year after winning in Cincinnati. Two years ago, Petrova was ranked third in the world but she has now dropped to No. 18.
She has not lost a set in three matches so far this week.
"I saved a lot of energy,'' Petrova said. "I am ready for tomorrow.''
Jankovic, however, spent two hours on the court in the quarterfinals against Vera Zvonareva, and 2:45 against Williams.
"It will be a tough one again, Nadia plays well indoors,'' Jankovic said. "But I will try my best to win a second straight title. I had two tough matches but I still have some energy for tomorrow.''
Jankovic, who holds a 5-2 career edge over Petrova, has won only two titles this year and lost the U.S. Open final to Serena Williams. But Jankovic has made 18 quarterfinal appearances, the most on the tour, 10 semifinals and is in her fifth final.
After the U.S. Open, Serena Williams returned to the No. 1 spot, but will drop down after losing to Li Na in her first match in Stuttgart. Jankovic already held the top ranking for a week in August.
Jankovic, Venus Williams, Safina reach quarters
Sporting Injury Worries Lessen
Petrova reaches Porsche GP final