Pennetta fell behind early on but hit back to win 3-6 6-0 7-6 (7-2) in two hours and 15 minutes.
Wozniacki seemed on course for a routine victory when she cruised through the opener but was then steamrollered for a set and a half as the Italian stormed through the second set and then surged into a 5-3 lead in the decider.
She failed to serve it out, however, as did Wozniacki at 6-5, with the set going to a breaker which the Italian clinched due a greater weight of shot.
Pennetta will meet Agnieszka Radwanska in the last four.
The 11th-seeded Pole led former world number one Ana Ivanovic 6-3 3-2 when the Serb had to pull out with an ongoing back problem.
Qualifier Monica Niculescu is also through after beating Maria Kirilenko 3-6 6-3 6-4.
In the men's draw, Tomas Berdych crushed Fernando Verdasco 6-1 6-0 while Ivan Ljubicic required three sets against Mikhail Youzhny before prevailing 7-6 (7/4) 6-7 (4/7) 6-2.
Berdych told www.atptour.com: "I felt really good on the court and played really well.
"Hard court is much more suitable for my game style. I can play more aggressive, I can give him much more pressure, less pace on the court, and then he starts to do more mistakes, more unforced errors.
"It's the game what I want to play; that's why the result was how was it."
The Czech will meet top seed Jo-Wilfried Tsonga next after the Frenchman proved too strong for Juan Carlos Ferrero 6-3 6-4.
Marin Cilic completed the semi-final line-up and will play Croatian countryman Ljubicic after seeing off big-serving South African Kevin Anderson 7-6 (7/4) 4-6 6-1.