For the second straight week, Serena Williams was flat and erratic at the start of her match against Caroline Wozniacki. For the second straight week, Wozniacki took advantage with just enough controlled aggression to win the opening set. For the second straight week, it didn’t matter in the end.

As she did in Montreal, Serena overcame her early struggles, as well as a bizarre late near-collapse, to beat Wozniacki in three sets—this time the score was 2-6, 6-2, 6-4. Momentum skipped back and forth across the net, but the level of play the two women produced together never rose very high. Numbers don’t lie, they say, and in this case it’s hard to argue: There were 15 breaks of serve; Wozniacki had as many double faults, eight, as she did winners; and of the 69 points Serena lost, 41 of them were on her own mistakes.

At first, Wozniacki showed a willingness to try to dictate points, and an ability to move Serena around. But Caro began to make her own routine, inexplicable errors in the second set, and her serve was a thorn in her game throughout. As for Serena, she winced repeatedly, received a pain-killer from the trainer in the second set, and spent time stretching her lower back, the same lower back that has sidelined her in the past.

But she was able to summon something close to her best when she needed it. Serena hit seven aces and 36 winners, and was eight of 12 on break chances. More important, after losing two quick games from 5-2 up in the third, she stopped the rot and held for the match in convincing fashion.

Wozniacki moves on after a second straight solid showing, though this match wasn’t one to build on—hopefully for her, it didn’t show the limits of her aggression. Serena will play her second straight final in Cincy, against either Maria Sharapova or Ana Ivanovic.