Playing underneath the closed roof on Centre Court while rain halted play elsewhere at the All England Club, Williams hit 13 aces — including three in the last game — to beat the fourth-seeded Czech 6-3, 7-5.
Kvitova was on an 11-match winning streak at Wimbledon and had not lost here since Williams beat her in the 2010 semifinals en route to her fourth title.
“She’s been playing so well on grass,” Williams said. “I had absolutely nothing to lose.”
The American four-time champion seized control by breaking Kvitova for a 4-2 lead in the first set and then never gave her opponent a chance to get back in the match. She saved a set point when trailing 5-4 in the second with a hard serve down the middle that Kvitova could return only into the net. That was the only break point the defending champion earned, as Williams won 86 percent of the points on her first serve.
Kvitova then led 30-0 in the next game but made four straight mistakes — including netting an easy forehand on break point — to give Williams the opening she needed.
Williams, who hit a Wimbledon-record 23 aces in a fourth-round win over Jie Zheng of China, is trying to become the first woman over 30 to win a Grand Slam title since Martina Navratilova won Wimbledon in 1990.