Dilshan was joined by fellow opener Upul Tharanga in a 282-run partnership for the first wicket, driving Sri Lanka to a total of 327-6 in the Group A match.
"This is the best match of my career today," Dilshan said. "I am really happy with my performance."
Zimbabwe was bowled out for 188 in 39 overs despite a valiant 80 by opening batsman Brendan Taylor, who put on a brave 116 for the first wicket with Regis Chakabva (35) before the innings fell apart.
Sri Lanka has seven points from five group matches and will finish among the top four. Zimbabwe has two points after three losses and a win.
Dilshan hammered 16 fours and a six in his ninth ODI century while left-handed Tharanga hit 17 fours in the co-host's strong total.
"He's got that magic touch with the bat, with the ball and even on the field," Captain Kumar Sangakkara said about Dilshan's performance. "He's been one of our most important players over the past 10 years (and) today again he showed how well he can come back from a couple of tough weeks for him."
Dilshan raised his first World Cup century off 95 balls in the 31st over by pushing the ball into the covers and taking a single.
Tharanga pulled Panyangara to backward square leg boundary, stretching the partnership to 196. Pakistan's Saeed Anwar and Wajahatullah Wasti held the previous World Cup record of 194 for the first wicket stand made against New Zealand in Manchester in the 1999 World Cup semifinals.
Tharanga posted his first World Cup century when both batsmen took the batting powerplay in the 41st over. He drove Price to the cover boundary to complete his century off 122 balls before hitting Greg Lamb for another three boundaries in the next over.
Mpofu grabbed three wickets in one over to finish with 4-62, but Dilshan and Tharanga had already done the damage.
Brendan Taylor and Regis Chakabva made a brave start to Zimbabwe's huge run-chase by sharing 116 runs off 119 balls.
Muttiah Muralitharan (3-34) broke the stand in his third over when Chakabva misread a perfect 'doosra' from the offspinner.
Dilshan also became only the second player in World Cup history after Netherlands allrounder Feiko Kloppenburg to hit a century and take four wickets. Kloppenburg scored 121 and grabbed 4-42 against Namibia at Bloemfontein, South Africa in 2003.