Chasing 282, Zimbabwe were all out for 255 in 49.4 overs.
Fast bowler Shaheen Shah Afridi captured five wickets and veteran pacer Wahab Riaz claimed four wickets.
A late blitz by all-rounder Imad Wasim propelled the hosts to 281, as Pakistan ended the innings with two wickets to spare.
Opener Imam ul Haq and middle-order batsman Haris Sohail scored half-centuries for the host team with scores of 58 and 71.
For Zimbabwe, Blessing Muzarabani and Tendai Chisoro took two wickets each, while, Carl Mumba and Pakistan-born Sikander Raza took one wicket each to restrict Pakistan to 281.
Earlier, Captain Babar Azam won the toss and decided to bat first as Pakistan kick-started its Cricket World Cup Super League campaign. The opening match at the Pindi Stadium is Babar Azam’s first as Pakistan’s ODI captain. It is also the first international match to be played in the country without spectators.
Pakistan handed a debut to Lahore Qalandars pacer Haris Rauf after his strong performance in the Pakistan Super League and the domestic circuit.
A dominant Pakistan had thumped Zimbabwe 5-0 in a 2018 ODI series, winning every match fair and square. Things, however, have changed since then. Inclusion of some senior players such as Brendan Taylor, Sean Williams and Craig Ervine has given some impetus to the touring side.
Head to head
Before today’s match, Pakistan and Zimbabwe have faced each other 59 times. The green shirts have won 52 and lost four of those encounters with one tie and two no-results.
Pakistan: Abid Ali, Imam ul-Haq, Babar Azam, Haris Sohail, Mohammad Rizwan, Iftikhar Ahmed, Faheem Ashraf, Imad Wasim, Wahab Riaz, Shaheen Afridi, Haris Rauf
Zimbabwe: Sikandar Raza, Brian Chari, Chamu Chibhabha, Craig Ervine, Brendan Taylor, Wesley Madhevere, Sean Williams, Carl Mumba, Tendai Chisoro, Blessing Muzarabani, Richard Ngarava
Match officials: Aleem Dar and Ahsan Raza (on-field umpires), Asif Yaqoob (third umpire), Rashid Riaz (fourth umpire); Javed Malik (match referee).