Shakib was appointed Bangladesh's vice-captain in June 2009. During Bangladesh's tour of the West Indies the following month, the captain Mashrafe Mortaza was injured and Shakib took over the captaincy. He was 22 years old at the time. Initially a temporary position, Shakib's success against the West Indies, securing his side's first overseas series win, ensured his retention of captaincy even after Mort recovered. Shakib was named The Wisden Cricketer's "Test Player of the Year" in November 2009. In July 2010, he stepped down from the ODI captaincy to concentrate on his personal performance. Mortaza took over until he became injured again and Shakib was asked to resume leadership. This lasted until he was relieved of captaincy in September 2011 due to a poor World Cup campaign.
On 22 January 2009 Shakib was ranked first amongst ODI all-rounders by the ICC. Although he was part of the auction of players held the following month for the 2009 Indian Premier League, Shakib was not chosen by any of the eight teams and no bids were made for him. This was despite being rated as the world's highest ranked ODI all-rounder at the time. His teammate Mashrafe Mortaza, who was bought in the auction, said "I would have been a lot happier if Shakib had got a team because he truly deserved it for his sensational form with the bat and ball".
At the beginning of 2009, there was speculation over Mohammad Ashraful's position as captain after a succession of defeats for Bangladesh and continuous poor form for Ashraful. Shakib was considered a possible successor by the Bangladesh Cricket Board (BCB). However, the BCB was cautious of over-burdening the all-rounder and decided against the move. Other candidates were discounted, and Ashraful remained as captain. Later in 2009, Ashraful's captaincy was again under scrutiny after Bangladesh exited the 2009 ICC World Twenty20 in the first round following losses to Ireland and India. When Mashrafe Mortaza replaced Mohammad Ashraful in June 2009, Shakib was appointed vice-captain, filling the position vacated by Mortaza.
In July–August 2009, Bangladesh toured the West Indies. When Mortaza injured his knee in the first Test, he was unable to take to the field on the final day and Shakib took over as captain. He and Mahmudullah led Bangladesh's bowling attack, sharing 13 wickets in the match and securing a historic win for Bangladesh. It was Bangladesh's first against the West Indies, their first overseas Test victory, and only their second Test win. The West Indies side was very inexperienced due to the fallout of a dispute between the West Indies Cricket Board and the West Indies Players' Association over pay. The first XI had made themselves unavailable for selection and a new squad had to be chosen. Seven West Indies players made their Test debut in the match and the side was captained by Floyd Reifer who had played the last of his four Tests ten years earlier. Shakib was fined 10% of his match fee for excessive appealing; bowler Shahadat Hossain was also fined and batsman Imrul Kayes was reprimanded for the same reason.
Shakib was appointed captain for Bangladesh's tour of Zimbabwe in August 2009 as Mortaza was still injured. In the second ODI of the five match series in Zimbabwe in August 2009, Shakib scored 104 off only 64 balls before being run-out – his third ODI century – to help his team to their highest score in ODIs and lead Bangladesh to a 2–0 lead in the series. He finished the series with 170 runs from five matches at an average of 42.50 – fifth highest run-scorer – and 6 wickets an average of 39.66, fourth highest wicket-taker in the series. Following his team's 4–1 victory in the ODI series against Zimbabwe, Shakib travelled to Australia to undergo medical treatment for acute groin pain. He had been experiencing pain since the end of the West Indies tour, but he had decided to play through the pain and lead Bangladesh in Zimbabwe. Although he did not win, Shakib was nominated Cricketer of the Year and Test Player of the Year in the 2009 ICC Awards; he was the only Bangladesh player to be nominated in either category that year.
Shakib's success meant that it was not a given that Mortaza would replace him as captain once fit, but it was announced in September 2009 that Mortaza would return as captain for Bangladesh's home ODI series against Zimbabwe the following month and Shakib would return to the role of vice-captain. However, Mortaza failed to return from arthroscopic surgery on both knees in time for the series, and Shakib was again named captain. After losing the opening match – in which Shakib criticised the performance of Bangladesh's batsmen including himself – Bangladesh went on to win the series 4–1. In the second match of the series, Shakib passed 2,000 runs in ODIs. In November 2009, Shakib was named The Wisden Cricketer's "Test Player of the Year".
Having signed a contract in November 2009, Shakib joined up with Worcestershire County Cricket Club, playing the second division of the County Championship, in July 2010. He was the first Bangladeshi to represent a county side. While playing for Worcestershire he took his best first-class bowling figures of 7/32 against Middlesex. In eight first-class matches he scored 358 runs at 25.57 (with one score over 50) and took 35 wickets at 22.37, as Worcestershire secured promotion to the first division at the end of the season. Shakib also played five one-day matches for Worcestershie, scoring 187 at an average of 37.40 (including two half-centuries) and taking 9 wickets at 17.77.
For his performances in 2009, he was named in the World Test XI by the ICC