Pacer Khurram Shahzad and left-arm wrist spinner Sufiyan Muqeem shared six wickets together to dismiss Islamabad side for 166 in 19.4 overs.
Batting first, Peshawar couldn’t capitalise on Mohammad Haris’ breezy 79 off 39 balls and was restricted to 179-8 after regular captain Babar Azam was forced to sit out due to illness.
Peshawar will now take on Islamabad in an elimination match on Thursday with the winner taking on the loser of the qualifier between table-topper Lahore Qalandars and Multan Sultans.
Islamabad finished the league stage with 12 points from six wins but ended up third behind Multan on net run-rate. Peshawar, which has played in all the PSL qualifiers since its inception in 2016, had 10 points from five victories.
Haris, who opened the innings in the absence of the unwell Babar, raised his half century off 26 balls and led Peshawar to 116-1 by the halfway stage as he shared a century-stand with Bhanuka Rajapaksa (41).
Islamabad captain Shadab Khan (2-42) dismissed both batters in successive overs when Rajapaksa holed out at deep mid-wicket and Haris offered a simple catch to Hasan Ali at long off and Peshawar lost its momentum.
Peshawar’s middle-order couldn’t pick up the pace in the latter half against the variation of Hasan (3-39) as Islamabad allowed only 63 runs and kept striking at regular intervals.
Islamabad powerhitters Alex Hales (15) and Colin Munro (15) both fell while going for big shots against Peshawar pace before Muqeem (3-37) ignited a middle-order collapse with three quick wickets and James Neesham got the prize wicket of Shadab, who scored 25.
Left-hander Faheem Ashraf top-scored with 38 off only 13 balls and lifted Islamabad’s hopes by adding a quickfire 55 off 24 balls with Mohammad Wasim before Shahzad (3-13) claimed the last two wickets with two superb yorkers in the final over to seal Peshawar’s fifth win.
(With inputs from AP)