Nafees first played in the national team in Bangladesh's maiden tour of England (2005). Nafees scored his maiden first-classcentury, as well as his first in Tests, at Fatullah in April 2006 against Australia. He scored his maiden one-day hundred against Zimbabwe in August 2006. Nafees was appointed vice-captain for the Champions Trophy in India in October 2006 with the view of grooming a successor for Habibul Bashar. The tournament was a successful one for him as he scored his second ODI century, again Zimbabwe were his opponents. He scored his third century against Zimbabwe again in November. Nafees finished 2006 with over 1,000 ODI runs, becoming the first Bangladeshi to pass the milestone in a calendar year. In June 2008 Nafees joined the unauthorised Indian Cricket League and was given a ten-year ban by the Bangladesh Cricket Board (BCB) however he severed his ties with the league in September 2009 and was therefore available for national selection.
Once again available to play for Bangladesh, Nafees returned to the squad for the first time since joining the ICL in preparation for Bangladesh's home series against India in January. Bangladesh lost both Tests, and Nafees played in one, scoring 25 runs. His Test come-back lasted one match and Nafees would have to wait more than 18 months before playing another Test. He made his return in an ODI series against New Zealand in October 2010 in which he scored 35 as Bangladesh won that match and 73 in the next match as Bangladesh once again took a seven-wicket victory. Despite his good performance Nafees was originally selected on the grounds that Tamim Iqbal was injured and eventually made way for him in the series against Zimbabwe and he was placed on standby in case of an injury. In the first two years after his return from the ICL Nafees played just four ODIs.
Included in Bangladesh's squad for the 2011 World Cup, Nafees played in two matches (scoring 42 runs) as the team exited the tournament in the group stage. He was retained in the squad to face Australia in three ODIs immediately after the World Cup finished in April, and struck two half-centuries that cemented his place in the side. Nafees was recalled to the squad to face Zimbabwe in August. In the one-off Test, his first since January 2010, he made scores of 50 and 9 as Bangladesh unexpectedly slid to defeat.
After scoring 82 runs including a half-century in the first Test against the West Indies in October, Nafees endured a run of low scores across Tests and ODIs that jeopardised his place in the team. He responded by striking an innings of 97 against Pakistan in the second match of a two-Test series. The 180-run partnership was a landmark in several ways: it was record for Bangladesh's fifth wicket, the first time the team had batted through a whole session without losing a wicket since March 2010, and the team's first century partnership in Tests since June 2010.
In the 2nd edition of BPL held in 2013, he joined Khulna Royal Bengals. He was selected as the captain of the team. He scored the maiden century in BPL 2. Before him, no other Bangladeshi player scored a century in the history of BPL.