Fakhar capitalised on a lucky escape to strike a superb 114 and lift Pakistan to a commanding total of 338 for four and fast bowler Amir ripped out India's top three batsmen before the defending champions subsided to 158 all out.
Pakistan had come into the tournament as the lowest-ranked team and lost heavily to India in their opening group match but they beat South Africa and Sri Lanka to make the semi-finals where they knocked out hosts England.
After India had won the toss, Fakhar, on three, was caught by wicketkeeper Mahehdra Singh Dhoni off a Jasprit Bumrah no-ball and the 27-year-old left-hander took full advantage to make his first international century.
He shared a fluent century opening partnership with Azhar Ali (59), the pair unleashing a barrage of crisp attacking strokes all around a sun-kissed ground.
Azhar also continued his fine form, reaching fifty off 61 balls before he was run out following a mix-up with his partner.
Fakhar lofted Ravindra Jadeja over long-on for six and got to three figures by sweeping Ravichandran Ashwin to the boundary.
He celebrated with an extravagant twirl of his bat and kissed the turf as the Pakistan supporters sensed an unlikely win.
Fakhar hit 12 fours and three sixes before skying a catch off Hardik Pandya but Pakistan had the perfect platform to make the highest total in a Champions Trophy final.
Babar Azam chipped in with a solid 46 and Mohammad Hafeez struck three sixes in a punchy unbeaten 57 that left India needing to produce the highest successful run chase in the tournament's history to lift the trophy for the third time.
Within three overs, however, their reply was in tatters as Amir produced a devastating spell of bowling.
He trapped Rohit Sharma lbw for nought with a swinging delivery and removed India talisman Virat Kohli with another fine ball which the captain could only edge to point for five.
Kohli, the world's top-ranked one-day batsman, had been dropped off the previous delivery in the slips and the India fans looked shell-shocked as he trudged off.
Their hopes now rested largely on the shoulders of Shikhar Dhawan who had been in fine form in the tournament but he made only 21 before nicking the inspired Amir to wicketkeeper Sarfraz Ahmed.
Spinner Shadab Khan snared Yuvraj Singh lbw for 22 and Dhoni, India's former captain who has saved the team on many occasions, pulled Hasan Ali to Imad Wasim at deep square leg to depart for four.
Shadab picked up his second wicket when Kedar Jadhav, on nine, gave Sarfraz a simple catch and India appeared to be crumbling meekly at 72 for six.
Pandya, however, briefly raised their spirits with a quickfire 76, reaching his fifty with three successive sixes off Shadab and hitting six maximums in all before he was run out.
Jadeja nicked Junaid Khan to slip for 15, Hasan had Ashwin caught by Sarfraz and Hasan forced Bumrah to lob another catch to the wicketkeeper, who pouched it gleefully to complete Pakistan's first Champions Trophy win with 19.
3 overs to spare.(UNI)