Shahid Afridi took his second five-wicket haul of the tournament to defuse a potential upset and bowl Pakistan to a 46-run win against Canada in their Cricket World Cup Group A game in Colombo.
Pakistan were made to work hard for their third win in a row after they were dismissed for 184 but they hit back to bowl Canada out for 138.
A disciplined bowling performance and some excellent work in the field were the highlights of Canada's best showing at the tournament to date.
That, however, was put in the shade by Pakistan, who prevented Canada from scoring freely and only three players reached double figures as Afridi returned five for 23.
Canada were led in the field by Harvir Baidwan, who returned three for 35 in ten overs, having Ahmed Shehzad well caught by Tyson Gordon for 11, Younus Khan trapped in front leg before for six and Saeed Ajmal bowled without scoring.
Henry Osinde trapped Mohammad Hafeez in front for 11 and Rizwan Cheema had Kamran Akmal (16) superbly caught in the gully by Nitish Kumar as Pakistan slipped to 67 for four.
Umar Akmal's 48 in 68 balls and Misbah-ul-Haq's 37 in 68 deliveries helped them recover before they lost six wickets for 44 runs to be all out in 43 overs.
The late collapse was initiated by leg-spinner Balaji Rao, who trapped Akmal in front before Cheema (2-33) removed Afridi, who offered Kumar a second catch.
Misbah fell when he was caught by wicket-keeper Ashish Bagai for Rao's second wicket while Jimmy Hansra returned two for 23 with the wickets of Abdul Razzaq (8) and Wahab Riaz (0).
Canada lost their openers Ruvindu Gunasekera (8) and Nitish Kumar (2), trapped in front by Umar Gul and bowled by Abdul Razzaq to slip to 16 for two.
Hope rested on the experience of Bagai, who made 16, Zubin Surkari, who hit 27 and Jimmy Hansra, who made 43 in 75 balls and while those players were still batting, Canada remained in the game, despite crawling along at around three runs per over.
The turn to spin by Afridi proved decisive, slowing Canada even further by ripping out wickets. Off-spinner Saeed Ajmal trapped Surkari in front before leg-spinner Afridi came into his own.
He bowled Hansra, Rizwan Cheema (1) and Baidwan (0), trapped Bagai in front and had Gordon outstandingly caught in the deep by Wahab Riaz.
And it was Riaz who ended the game, bowling Osinde for nought following Balaji Rao's run out - by Afridi - for one.
Pakistan made an unbeaten start to the tournament with wins over Kenya and Sri Lanka while Canada slumped to heavy defeats at the hands of Sri Lanka and Zimbabwe.
© Cricket World 2011