Pakistan 237-7 (50 overs): Malik 78, Sarfraz 44, Kuldeep 2-41, Bumrah 2-29
India 238-1 (39.3 overs): Dhawan 114, Rohit 111
India won by nine wickets
Rohit Sharma and Shikhar Dhawan shared on an opening partnership of 210 as India thrashed Pakistan for the second time at the Asia Cup in Dubai.
The victory, coupled with Bangladesh's win over Afghanistan, means India have booked their place in Friday's final.
India restricted Pakistan to 237-7 before chasing down the target in 39.3 overs, for the loss of just one wicket.
Dhawan hit 114 from 100 balls before he was run out, with Rohit finishing on 111 not out from 119 deliveries.
The pair had also top scored as India beat their bitter rivals by eight wickets in the group stage of the tournament, which is being played in Dubai and Abu Dhabi.
Rohit's knock was his 19th one-day hundred, while his partnership with Dhawan was India's highest one-day international opening stand against Pakistan - and their fourth highest first-wicket stand against anyone in the ODI format.
The win is India's biggest against Pakistan in terms of wickets in ODIs, improving on the eight-wicket win over Pakistan in Melbourne in 1985.
Pakistan's innings was anchored by Shoaib Malik who made 78 from 90 balls, adding 107 for the fourth wicket with skipper Sarfraz Ahmed (44) who had won the toss.
In the other Super Four game in Abu Dhabi, Bangladesh ended Afghanistan's chances of reaching the final in a final-over thriller.
Chasing 249 to win, and needing eight off the final over with four wickets in hand, Rashid Khan was caught and bowled by Mustafizur Rahman off the second ball of the over and Afghanistan fell short by three runs.
Pakistan take on Bangladesh in Abu Dhabi on Wednesday, in what is effectively a semi-final - with the winner earning a place in the final against India. Pakistan currently lead the Tigers on net run rate.
Before that, India face Afghanistan in Dubai in their final Super Four game on Tuesday.