The Czech world number 10, who also won last week in Prague, finally triumphed 7-6 (8-6) 4-6 6-3 in two hours and 52 minutes.
Kvitova, the victor in Spain in 2011 and 2015, becomes the first woman to win the tournament three times.
But she was made to work hard by the world number 20 before extending her winning run to 11 matches.
Bertens beat world number two Caroline Wozniacki and five-time Grand Slam champion Maria Sharapova on the way to the final and will now move her above her previous career-high ranking of 18.
There was little in it in the opening set with Bertens breaking to go 4-2 up, only for Kvitova to respond immediately, and it was no surprise that the set ended with a tie-break.
Kvitova, 28, overcame an early double fault to go 4-2 up but Bertens levelled it at 4-4 before the Czech claimed the next two points to set up two set points.
Bertens saved both but then failed to take advantage on her own serve with Kvitova loudly screaming her delight at as she secured the set.
The 26-year-old Dutch player dug deep in the second set as Kvitova started to tire and errors crept into her game. It allowed Bertens to capitalise and she smartly levelled the match.
In the decider, Kvitova broke to go 4-2 up but Bertens broke straight back, only for Kvitova to break a second time and from there she held her nerve for her 24th WTA title.
Kvitova later pulled out of the Italian Open, where she was due to face British number one Johanna Konta in the opening round on Monday.