Dawson started his career at Northern Premier League side Radcliffe Borough in the middle of the 2007–08 season, and became a first team regular after just a few games. In the two seasons he was at the club, he became a favourite of the fans and other team members. He later signed for his local club Rochdale in February 2009 on a two-year contract. Although a Rochdale player, Dawson stayed at the club until April 2009 as a loan. In the season he left, he was voted the Player of the season by Radcliffe. If he is off duty with West Brom, Craig is still known to visit the club on a regular basis.
Dawson made his debut for Rochdale reserves, scoring a header from a corner against Manchester City. Dawson was set to make his debut in the second half of the 2008–09 season; however, was set back by injury. Dawson finally got his Rochdale debut on 8 August by starting in the League Two clash with Port Vale at Vale Park. The match ended in a 1–1 draw. Dawson's second game was at Hillsborough Stadium in the League Cup against Sheffield Wednesday. Despite conceding three goals, Rochdale fans gave Dawson rave reviews and named him man of the match.
On 31 August 2010, Dawson signed for Premier League club West Bromwich Albion for an undisclosed fee on a three-year contract, plus a year's option in the club's favour. He made his competitive Baggies debut in a 4–1 League Cup win at Bournemouth in August 2011 and the following day was called up into the England Under-21s squad by Stuart Pearce, who watched him from the stands at the Seward Stadium. On Tuesday 26 July 2011, Craig Dawson was rewarded with a new-and improved Albion contract on 21 February 2012. The centre-half penned a three-and-a-half-year deal to June 2015, plus a further year's option in the club's favour. Dawson made his first Premier League start on Saturday 17 September 2011, away from home against Swansea City A.F.C. as a fill-in central defender for the suspended Gabriel Tamaş in a disappointing 3–0 defeat. He re-appeared in the starting eleven for the game against Manchester City in which West Brom went on to lose 4–0. Again, Dawson appeared in the next league game against Queens Park Rangers, West Brom went onto win the game 1–0.
On 23 January 2013, despite interest from Blackburn Rovers, Leicester City, Leeds United and Nottingham Forest, championship club Bolton Wanderers won the race to sign Dawson on loan for the rest of the season. On 23 February, Dawson scored twice in a 4–1 win against Hull City Just three days later on 26 February, he scored the only goal in a 1–0 home win against Peterborough United. He scored for the third successive match on 2 March, scoring the winning goal in a 3–2 win against Barnsley.