Ashraful made his first-class debut on 22 November 2000, playing for Dhaka Metropolis cricket team. He opened the batting, scoring 41 and 6; Ashraful also claimed five wickets for 59 runs in the first innings with his leg-spin bowling. Three days later Ashraful made his list A debut, again playing for Dhaka Metropolis and opening the batting he scored 22 and took two wickets as his team won the match. Ashraful scored his maiden first-class century in his second match, making 101 against Khulna Division. The seven wickets Ashraful took for 99 runs in a match against Chittagong Division in January 2001 remain his best bowling figures. Over the course of the season he played ten first-class matches – scoring 585 runs at an average of 30.78, including two centuries, and taking 39 wickets at an average of 25.48, including three five-wicket hauls. He also played nine list A matches, scoring 85 runs and taking four wickets.
Ashraful made his ODI debut against Zimbabwe on 11 April 2001, where he made 9 runs and Bangladesh lost the match by 36 runs. He took his first international wicket in the match, that of Andy Flower.
Ashraful made his Test debut on 6 September 2001 against Sri Lanka. He top-scored in each innings, and although Bangladesh slumped to an innings defeat, Ashraful scored 114, and in the process became the youngest player to score a Test century, beating Mushtaq Mohammad's record, and was named man of the match. In the process, he became just the second Bangladesh player to score a Test century on debut, the first since Aminul Islam Bulbul in 2000 during Bangladesh's first Test. Trevor Chappell, a former coach of Bangladesh's national side, commented that "His determination, commitment and attention to detail would put a mature and an established person to shame. The manner he concentrates on his batting made me believe that the lad is destined to have a long cricketing journey." Following the century, Ashraful began receiving high expectations. However, a prolonged string of poor performances and soft dismissals resulted in him being dropped from the national team.
He had a poor first World Cup – the 2003 Cricket World Cup – making 71 runs at an average of 14.20, with Bangladesh being eliminated in the Group Stage.
In February and March 2004, Bangladesh toured of Zimbabwe. At the time, Zimbabwe were without many of their senior players, but still won the Test series 1–0 and the ODI series 2–1. The solitary ODI victory was Bangladesh's first international win since defeating Pakistan in the 1999 World Cup; Ashraful scored 51 runs from 32 balls in the match and was named man of the match. Ashraful returned to the team in December 2004 against the Indian cricket team and scored his second century, 158 not out, claiming the record for the highest individual Test score by a Bangladeshi. India's captain, Sourav Ganguly, described the innings as one of the best Test innings he had seen.
In May and June 2005, Bangladesh toured England for a two-Test series against the hosts and a triangular ODI tournament involving England Australia. Although they won just one ODI out of six, their solitary victory against Australia was described by Wisden as "the biggest upset in one-day international history". Ashraful scored 100 to help his side to victory and was named Man of the Match for his efforts. He scored two more half centuries in the series, finishing with 259 runs at an average of 43.16, making him third-highest run-getter for the series.
In 2006 he scored his third century, with 136 in the first test against Sri Lanka.
In November 2006 he set a league record score of 263, against Chittagong Division for Bangladeshi first-class cricket – although this record has since been bettered by Raqibul Hasan.
Ashraful was selected for the Asian squad in the inaugural Afro-Asia Cup. With bowler Mashrafe Mortaza, he was one of two Bangladeshi players in the 15-man squad. Ashraful played in two of the matches, but failed to score a run.
Sonargaon Cricketers, a new team in the Dhaka Premier League for the 2005/06 season, signed Ashraful and Mohammad Rafique. The team lost four of its first five games and sought a change of leadership in an attempt to improve its results. Ashraful was appointed captain at a time when the club was facing relegation. Under his leadership, Sonargaon finished second in the league. The opening match of the two-Test series against Sri Lanka in February and March 2006 was played at Chittagong Divisional Stadium, the first international match the ground hosted. He scored 136 in the first innings, bringing up his third Test century; he received the man of the match award, although Sri Lanka won by eight wickets. Bangladesh lost the second Test by ten wickets and the series 2 0, with Ashraful managing 37 runs in the match and claimed the wicket of Mahela Jayawardene.
He played for Rainhill CC in a local cricket league in England.
The West Indies hosted the 2007 Cricket World Cup in March and April; Ashraful was included in the 15-man squad led by Habibul Bashar. Bangladesh made it to the second stage of the competition and finished seventh. Along the way the team caused an upset by India to help knock them out of the tournament. Ashraful scored 87 runs from 83 balls against South Africa in the course of Bangladesh's 67-run victory. His innings was the highest score by a Bangladesh player in World Cups and he was named man of the match for the performance. With 216 runs from 9 matches at an average of 36, Ashraful was Bangladesh's highest run-scorer in the tournament.
On 6 February 2009, Ashraful took part in a player auction for the 2009 Indian Premier League. The Mumbai Indians bought him for his base price of US$75,000, but he only played one game and scored just 2 runs.
Shortly after the World Cup, India toured Bangladesh for two Test matches and three ODIs. In the second Test, which Bangladesh lost by an innings and 239 runs, Ashraful scored the fastest half-century in Test cricket in terms of time (taking 27 minutes) and equal second-fastest when measured in balls faced (scored off 26 balls). Aside from the 67 he managed in one of the fastest half-centuries in Test cricket, Ashraful managed just five more runs in the series; in two ODIs, he scored 41 runs. After defeats in both series, Habibul Bashar stepped down from Bangladesh's one day captaincy; Mohammad Ashraful was appointed the team captain in all forms of cricket on 2 June 2007. At the time, he had played 35 Test and 101 ODIs and had some experience of captaincy at domestic level. Aged 22, he was the second-youngest international captain
Ashraful and Mortaza took on these roles from the start of the Sri Lanka tour in June 2007. Whatmore had declined to extend his contract and Shaun Williams took over as coach on a temporary basis. Bangladesh lost all three Tests by an innings; in a series in which his teams batsmen struggled – in the second Test they registered their lowest scored in an innings (62) – Ashraful scored the most runs for Bangladesh with 218 at an average of 43. In the second Test Ashraful combined with wicketkeeper Mushfiqur Rahim to score 191 for the sixth wicket, establishing a record for Bangladesh, and Ashraful scored 129 not out. Bangladesh also lost the three-match ODI series that followed 3–0. In September 2007 South Africa hosted the ICC World Twenty20. Victory against West Indies in the first round was enough to ensure Bangladesh's progression to the second round, although it was the only one of their five matches they won. In the match against West Indies, Ashraful scored a record-breaking half-century, coming off just 20 deliveries it was at the time the fastest T20I half-century in terms of balls faced; he held onto the record for six days before Yuvraj Singh claimed it in a match against England (his 50 took just 12 balls).
During the first Test match of South Africa's 2007–08 tour, Ashraful dismissed AB de Villiers in very unusual fashion: after the ball left his hand it bounced twice, at which point de Villiers attempted to hit the ball but instead sent it straight up instead. Ashraful caught the ball and, despite de Villiers standing his ground, umpire Steve Bucknor confirmed the dismissal. The dismissal was legal per Law 24, section 6 of the Laws of cricket which state the ball must bounce more than twice or roll along the ground to be deemed a no-ball.
Mohammad Ashraful created some controversy in March 2008 when he slapped a fan who called him "rubbish" while he was training at an indoor stadium in Dhaka. This happened at a time when Ashraful was being heavily criticised in the media for his poor form with the bat and questionable tactics on the field as captain. The BCB fined him 25% of his salary for the month of March 2008 for violating the Code of Conduct. He later apologised for the incident.
After an extended run of poor form and Bangladesh's first-round exit in the World Twenty20 2009, Ashraful was sacked as captain in June 2009. He was replaced by Mashrafe Mortaza for the tour of West Indies, with Shakib Al Hasan taking the position of vice-captain. It was hoped that Ashraful could climb out of the batting form slump in all formats in the international game with the release of the pressure of the captaincy.
Ashraful was dropped when England toured Bangladesh in February and March 2010. He was recalled for Bangladesh's tour of England two months later. He struggled in June's 2010 Asia Cup, and was subsequently dropped; he was recalled for the ODI leg of the England tour due to injuries to the squad. After a poor run of form, Ashraful was dropped for ODI series against New Zealand in October 2010. Though he was out of the squad, the following month when the BCB announced its central contracts for the coming year Ashraful was one of six players given the highest level of contract (A+). He returned to domestic cricket, scoring a century for Dhaka Division in the opening match of the National Cricket League. Dhaka won the one-day competition, and Ashraful, who was the second-highest run-getter with 331 runs and claimed 7 wickets from 7 matches, was named player of the tournament. The West Indies toured in October, but after scoring just two runs in as many matches in the ODI series against them, Ashraful was dropped from the Test squad.
Ashraful captained Bangladesh at the 2010 Asian Games in late November. They played Afghanistan in the final; Bangladesh won by five wickets, securing the country's first gold medal at the Asian Games. Shortly after winning the tournament, Ashraful was recalled to Bangladesh's full squad for the five-match ODI series against Zimbabwe in December. Though they lost the first match, Bangladesh went on to win the next three completed, with one called off due to rain, to beat Zimbabwe 3–1. Ashraful played one match, scoring six runs. He was included in Bangladesh's 15-man squad for the 2011 World Cup. From three matches Ashraful managed 18 runs and was dropped from the squad for the three-match ODI series against Australia that followed.
In April he captained Bangladesh A on a tour of South Africa and his performances, including striking a one-day century, earned him a recall to the senior squad to face Zimbabwe in August. In the one-off Test, Ashraful scored the most runs for his team with an aggregate of 112, including a half-century as Bangladesh succumbed to defeat. Bangladesh lost the following ODI series against Zimbabwe 3–2. Bangladesh's batsmen struggled early in the series, and Ashraful scored 23 runs from three matches. For the 2011/12 season, the National Cricket League of Bangladesh was expanded from six first-class teams to eight. Dhaka Metropolis and Rangpur Division were the new teams, with Ashraful captaining the former. Though he scored his first first-class century in over a year in the competition, Ashraful was dropped from the ODI squad to face Pakistan in December. He was retained in the Test side for the Pakistan series, but was dropped after the first Test, in which he scored only one run. During a match in the Dhaka Premier Division Cricket League in January 2012, Ashraful was involved in an incident with Tamim Iqbal that led to the latter being banned for one match and fined.
The Bangladesh Cricket Board founded the six-team Bangladesh Premier League in 2012, a twenty20 tournament to be held in February that year. The BCB made Ashraful the 'icon player' for Dhaka Gladiators. Dhaka won the tournament, and in twelve matches Ashraful scored 258 runs, making him the BPL's second highest run-scorer amongst Bangladesh batsmen. When the BCB announced its central contracts for 2012, Ashraful's A+ contract was not renewed.
Mohammad Ashraful admitted to spot-fixing during the 2013 Bangladesh Premier League. The Bangladesh Cricket Board reacted immediately by suspending him from all forms of the game temporarily, until the ICC's Anti-Corruption and Security Unit submits its report on investigations into fixing. The alleged fixing involves a match between the Dhaka Gladiators and the Chittagong Kings teams during the second edition of the BPL on 2 February 2013. The 28-year-old Ashraful was allegedly paid about $12,800 to lose the match, but the cheque he was given later bounced, according to the local media. He was also allegedly involved in fixing another match 10 days later, against the Barisal Burners, which his team lost by seven wickets. In June 2014, the Bangladesh Cricket Board found him guilty and banned him for eight years but reduced to five years (with two years suspended) later on.
In August 2016 Ashraful's ban was partially lifted, allowing him to play in domestic cricket in Bangladesh. He will become eligible to play in international fixtures in 2018.2007 – Grameenphone Prothom-alo Player of the Year award