Alexander Zverev beat Denis Shapovalov to reach the fourth round of the Madrid Open, where he will face 21st seed Francisco Cerundolo.