Kvitova came close to breaking Williams at the first time of asking, but the American survived the scare to hold and keep games going by way of serve in the first set.
The pair came close to entering a tie-break, but Williams cruised through the 12th game to earn a break and set point.
Kvitova tried once again to break Williams in her first service match of the second set, but the 34-year-old kept in control.
Both players remained strong on their serves but struggled to find the breakthrough, which resulted in a tie-break that ended in Kvitova's favour.
The third set kept the contest tight as games went by the way of serve, despite both players coming close to a break, but it was Kvitova who was able to find a crucial break point to wrap up the match.