W czerwcu 2006 roku Swansea City złożyła ofertę kupna Johnsona za 100 tysięcy funtów, którą odrzucono. Sezon 2005/2006 zakończył z 53 występami oraz ośmioma bramkami we wszystkich rozgrywkach. Został również wybrany do najlepszej jedenastki sezonu w League Two.
Cardiff City 4 lipca 2006 roku Johnson za 275 tysięcy funtów przeszedł do Cardiff City po rozegraniu 183 spotkań dla Wycombe Wanderers. Stał się szóstym zawodnikiem, który trafił do tego zespołu w letnim okienku transferowym. W nowym klubie zadebiutował 5 sierpnia w meczu Football League Championship z Barnsley. 23 lutego 2007 roku w wygranym 4:1 spotkaniu z Preston North End zdobył swoją pierwszą bramkę w Cardiff City. Sezon 2006/2007 zakończył z 33 występami i dwoma bramkami.
W sezonie 2007/2008 Johnson wystąpił w 53 meczach oraz zdobył siedem goli. Został także wybrany najlepszym zawodnikiem roku w Cardiff City oraz dotarł ze swoim klubem do finału Pucharu Anglii. Cardiff City przegrało 0:1 z Portsmouth, a Johnson zagrał przez cały mecz. W sezonie 2007/2008 został także wybrany najlepszym piłkarzem Cardiff City.