Apart from Zaman (114), Azhar Ali (59), Mohammad Hafeez (57 not out) and Babar Azam (46) also contributed handsomely to Pakistan's cause.
Pakistan, who lost their campaign opener against India, seemed a different side this time. Pakistani batsmen played intelligently and showed their character for the big match. They played the ball according to its merit and made full use of the conditions despite losing the toss.
India, on the other hand, who played to their potential throughout the tournament, were struggling against the disciplined Pakistani batting lineup and failed to utilise the conditions completely.
Fielders made several mess-ups in the outfield while bowlers failed to bowl at the right line throughout the innings as a result arch-rivals Pakistan managed to score a healthy total.
Put in to bat, Pakistan got off to a perfect start. Openers Azhar and Zaman put up a solid platform for other batsmen to post a good total on the board. The duo forged 128-run partnership in 23 overs before a running mix-up cost Pakistan a wicket.
After playing a shot to left of the square leg, Azhar wanted to steal a single but Zaman didn't respond his call and thus India got a much needed breakthrough in form of Azhar. The 32-year-old batsman slammed four boundaries and one six in his 71-ball knock.
Unperturbed by the fall of Azhar's wicket, Zaman, who was given a lifeline at three runs by pacer Jasprit Bumrah, continued his attack and displayed some quality strokes around the ground to enthrall the crowd. Soon, Zaman completed his century in 92 balls through a sweep at the square leg.
Incoming batsman Babar Azam kept on supporting the 27-year-old in-form batsman by giving him the strike. After completing his century and adding 72 runs for the second wicket with Azam, Zaman tried to up the ante. But while trying to slog the medium pacer Hardik Pandy's delivery, Zaman was caught by Ravindra Jadeja, who ran from the point to take a brilliant catch at the square on the off-side in the 34th over. In his 106-ball innings, Zaman hit 12 boundaries and three sixes.
With 16 overs remaining and two set batsmen back to pavilion, Azam and Shoaib Malik (12) played sensibly and punished the bad balls. Azam, who was previously supporting Zaman, now took the charge and played freely. But just when it seemed good for the Pakistan team, Malik played a loose short off pacer Bhuvneshwar Kumar and gifted his wicket. Kedar Jadhav took a simple catch at the deep cover to dismiss the 35-year-old batsmen in the 40th over.
Middle-order batsman Mohammad Hafeez then joined Azam but this time the Pakistani duo failed to click as India skipper Virat Kohli's ploy to bring back spinner Jadhav clicked. After adding 20 runs for the fourth wicket with Hafeez, Azam was caught by Yuvraj Singh at the boundary in the 43th over. His 52-ball knock comprised of four boundaries.
The last few overs saw Hafeez thrashing Indian bowlers all around the park. In the process, Pakistan crossed the 300 run mark with Hafeez slamming a huge six over deep square leg in the 46th over off pacer Kumar. Soon, Imad Wasim (25) also joined Hafeez and attacked Indian bowlers to post a healthy total.
For India, pacers Bhuvneshwar Kumar, Hardik Pandya and spinner Kedar Jadhav took one wicket each.
Brief score: Pakistan 338/4 (Fakhar Zaman 114, Azhar Ali 59; Bhuvneshwar Kumar 1/44, Kedar Jadhav 1/27) against India.
Pakistan's Victory over India in CT2017 Final was Special
Bowlers failed India, reckons off-spinner Harbhajan Singh
Latest ODI Team Rankings Post Champions Trophy 2017
Sarfraz Ahmed named captain of ICC Champions Trophy 2017 Team
New No.6 Pakistan inch closer to 2019 World Cup direct entry
Gautam Gambhir slams Kashmiri separatist for lauding Pakistan
Pakistan a serious contender for 2019 World Cup, feels Shahid Afridi
CT2017: Top 5 Bowlers
CT2017: Top 5 Batsmen
Pakistan beat India to lift Champions Trophy (Highlights)