Babar Azam and Usman Shinwari starred as Pakistan eventually saw off a Sri Lanka fightback to secure a 67-run victory in the second ODI in Karachi.

After rain wiped out the series opener last Friday, conditions were far more conducive for play on Monday, with Pakistan posting 305-7 thanks mainly to a century from the brilliant Babar.

Sri Lanka quickly slipped to 28-5 in reply as Shinwari (5-51) struck three times, only for a record stand between Shehan Jayasuriya and Dasun Shanaka to keep the tourists' hopes alive.

However, having added 177 - the highest sixth-wicket stand for Sri Lanka in one-day cricket - both well-set batsmen were dismissed with the score on 205 following a second delay due to floodlight issues at the National Stadium.

Jayasuriya fell four short of a first ODI ton when he edged through to wicketkeeper Sarfraz Ahmed off the bowling of left-arm paceman Shinwari, who went on to complete a second five-wicket haul in the format.

Shanaka, meanwhile, holed out in the deep on 68 when trying to deposit a short ball from Shadab Khan (2-76) two balls later, with the tourists losing their last five wickets for 33 runs to be bowled out for 238 in 46.5 overs.

While made to wait a little longer than expected after the early clatter of wickets, Pakistan were able to celebrate a first one-day win at the venue for more than a decade.

Unlike their opponents, their top order had prospered. Fakhar Zaman made 54 from 65 balls, including sharing in a first-wicket stand worth 73 with Imam-ul-Haq (31), before Babar and Haris Sohail (40) put on 111 for the third wicket.

Having reached his 11th ODI hundred from just 97 deliveries, Babar eventually fell for 115 having hit eight fours and four sixes, the right-hander miscuing a shot to square leg.

Iftikhar Ahmed – playing in his first one-dayer since November 2015 – added a quickfire unbeaten 32 from 20 balls to help push the final total beyond 300, a score that was beyond Sri Lanka despite the best efforts of Jayasuriya and Shanaka.

The two teams complete the 50-over series at the same venue on Wednesday before shifting to Lahore for three Twenty20 games.