The Pakistan middle-order batsman resumed on 69* and continued the visitors' recovery from 101/5. The pair were separated with the score on 278 when Agha Salman fell for 83, but Shakeel carried on for Pakistan.
His double century is the 45th by a Pakistan batsman in Test cricket and just the second in the last seven years. Abid Ali had made 215* against Zimbabwe in Harare in 2021.
Shakeel is also only the second Pakistan batsman to score a double-century in his first Test match away from home.
The left-hander has had a terrific start to his Test career with his lowest score in 11 innings being 22. He had made 94 in just his second Test match against England in Multan and went on to make his maiden hundred earlier in the year against New Zealand.
Shakeel's batting average after Pakistan's first innings in Galle is a stunning 98.5, the highest for anyone to bat more than 10 times in Tests after Sir Donald Bradman.
He has already eclipsed the exceptional start his teammate Abdullah Shafique had in Test cricket. In his first 11 Test innings, Shakeel has piled up 788 runs, the most by any Pakistan batter, going past Shafique and Javed Miandad, who had made 720 and 654 runs respectively. Overall, only seven batters have made more runs in their first 11 Test innings.