Kvitova outlasted Bertens 7-6 (6), 4-6, 6-3 in a grueling final decided when the unseeded Dutch player hit a backhand long on the final point after nearly three hours.
"Everything that I had in my body, I just tried to put it out, even if it was very, very tough today," said Kvitova, who was playing her 11th match in 13 days after also winning the Prague Open last weekend.
"In the third set, I was really thinking that I can't do it anymore. But then when you step [into] the shot again, you are just trying to hit the return, you play the rally, the serves, whatever."
Kvitova previously won on the Madrid clay in 2011 and 2015. This third win took the Czech's career total to 24 titles, including four in the first five months of 2018.
She and Bertens each had three breaks, with both saving many more chances.
The key moment came when Bertens appeared to swing the momentum in her favor by pulling back a break in the third set. Kvitova, however, immediately recovered the advantage for a 5-3 lead and served out for the championship.
"It was pretty difficult for me to have a break in the third set and lose my serve," Kvitova said. "Mentally, it was very difficult because I know how tough it is to break her. Luckily, the chance came for the second time."
Bertens' appearance in the final meant she will rise to a career-high 15th in the rankings. But that was little solace after having come so close to the title.
"It really hurts right now," Bertens said. "Maybe tomorrow or next week or in a few weeks I can really look back on a great week and know I'm on the right way."
The roof of the Caja Magica was closed without play being interrupted when it began raining in the second set.