Kirilenko will next meet 2006 champion and compatriot Maria Sharapova, who beat sixth-seeded Italian Sara Errani 7-6 6-2 in a late evening match at the Indian Wells Tennis Garden.
Left-hander Kvitova double-faulted 13 times during an error-strewn encounter which ended after almost two-and-a-half hours when the 2011 Wimbledon champion sent a forehand long on a steaming hot afternoon at the Indian Wells.
Kirilenko, who won her sixth WTA singles title at Pattaya City last month, squealed in delight while pumping her fists in celebration after extending her unbeaten record this year in three-set matches to 6-0.
"Finally I reach the semi-finals," a jubilant Kirilenko said courtside after reaching the last four at Indian Wells for the first time at the elite WTA event. "It is my 10th time playing here.
"I am really happy I won this match. I had some problems with my knee in the first set but I was able to keep fighting and win. Every time we play we have really tough ones.
"In the first set I was leading 4-2, and then suddenly she start to play unbelievable, a lot of winners. It seems when she's losing she's more relaxed. She can be very dangerous."
Kirilenko, who had upset third seed Agnieszka Radwanska of Poland in the previous round, broke Kvitova in the sixth game of the opening set but then failed to hold her serve in the seven and ninth games as the Czech took early control.
Kvitova seized an early 4-2 lead in the second set but her power game became increasingly erratic before she lost the set in unusual circumstances when, serving at 4-5 and 15-0, she made four successive double faults for the Russian to level.
The final set went with serve until the sixth game when the Czech again failed to hold. After breaking back in the seventh with a rasping forehand winner down the line, Kvitova lost serve in the eighth with her 13th double fault of the match.
Serving for the match, Kirilenko began poorly to trail 0-30 but won the next four points on three Kvitova unforced errors to wrap up the win and improve her record against the Czech to 4-3.
Asked how she had come back from 0-30 down in that final game, the Russian replied: "I just said to myself, 'Hit your serve as hard as you can because she is hitting the ball as if she doesn't care.' And I did.
"I have two wins over top-10 players here, and now I feel that I can be on this level. Nothing is scary out there. I can compete, and as you can see, I can beat them."
In a rematch of last year's French Open final won by Sharapova, the second-seeded Russian scraped past Errani in a tight opening set, clinching the tiebreak 8-6, but stormed through the second as she broke her opponent three times.
"It was definitely not my best match of the tournament, I started quite slowly today," Sharapova, a losing finalist at Indian Wells last year, said courtside.
"But I'm giving myself an opportunity to be back in the final and hopefully I will go further this time."
Asked about the challenge of playing fellow Russian Kirilenko in the last four, Sharapova replied: "She's played extremely well this year and it's never easy to play a compatriot."