W reprezentacji Szwecji Mjällby zadebiutował 12 marca 1997 roku w spotkaniu przeciwko Izraelowi. W 2000 roku znalazł się w kadrze Szwecji na mistrzostwa Europy. Na Euro „Blågult” zajęli ostatnie miejsce w swojej grupie i odpadli z turnieju. Johan wystąpił we wszystkich trzech meczach, a w przegranym 2:1 pojedynku z Belgią zdobył jedyną bramkę dla swojej drużyny. W 2002 roku Mjällby otrzymał powołanie od Larsa Lagerbäcka i Tomasa Söderberga na mistrzostwa świata. Na boiskach Korei Południowej i Japonii Szwedzi w 1/8 finału zostali wyeliminowani przez Senegal. Johan na mundialu tym pełnił rolę kapitana swojego zespołu i wystąpił w każdym ze spotkań w pełnym wymiarze czasowym. Ostatnią wielką imprezą w karierze Szweda były Mistrzostwa Europy 2004. Podopieczni Lagerbäcka i Söderberga zajęli wówczas pierwsze miejsce w swojej grupie, ale w ćwierćfinale przegrali po rzutach karnych z Holendrami. Po turnieju tym Mjällby zakończył reprezentacyjną karierę. Dla drużyny narodowej rozegrał łącznie 49 pojedynków, w których zdobył cztery bramki.