Wozniacki made 31 unforced errors and had her serve broken for the fourth time to end the match. She hit the ball into the net on the final point.
"She (Zvonareva) played a really good game, definitely. She was not missing a lot. She was going for her shots. Most things were going in," said 20-year-old Wozniacki.
"I made some mistakes today that I usually don't do. It's a tough day for me."
Wozniacki, the U.S. Open runner-up to Kim Clijsters a year ago, would have passed Williams as the top-ranked player on the WTA Tour had she won the US Open.
"I don't like losing. I think it's always disappointing when you lose a match. But, I just need to learn from this. I made it to the semifinals of the US Open, and still when I look back on this tournament I can be proud of what I've achieved," added the Dane.
"I was really trying, I was really trying to move my legs even more, trying to get into this rhythm when I could lead in this game. But, you know, she was really strong today and she played really well."
Zvonareva hasn't dropped a set in the tournament. She will take on Kim Clijsters, the defending champion from Belgium who clinched her 20th straight victory at the U.S. Open in the semifinals over two-time champion Venus Williams, 4-6, 7-6 (7-2), 6-4.
"I'm happy with the way I played today," said Zvonareva.
"It was a tough match, but I was patient and aggressive like I was in the previous matches."