A regra prática
Mal é advérbio e é o oposto de bem: "Ele dormiu mal" (dormiu bem/mal). Mau é adjetivo e é o oposto de bom: "Ele é um mau aluno" (bom aluno/mau aluno).
O truque infalível
Troque a palavra por "bem" ou "bom" na frase. Se fizer sentido com "bem", é mal. Se fizer sentido com "bom", é mau. "Fulano é mal-humorado" → "bem-humorado" (faz sentido) → mal. "É um sujeito mau" → "é um sujeito bom" (faz sentido) → mau.
Exemplos
Advérbio (mal): "A prova saiu mal", "mal cheguei e já fui embora" (sentido de "assim que"), "passou mal no exame".
Adjetivo (mau): "É um mau motorista", "mau humor", "mau caráter", "o filme era sobre o bem e o mau" (aqui, cuidado: como substantivo, é "o mal", veja abaixo).
Cuidado com o substantivo "o mal"
Quando "mal" funciona como substantivo (equivalente a "o oposto do bem", "doença" ou "dano"), também se escreve com L: "o bem e o mal", "que mal há nisso?", "ele sofre de um mal raro".
Perguntas frequentes
Como saber se é "mal" ou "mau" rapidinho?
Troque por "bem": se encaixar, é "mal" (advérbio). Troque por "bom": se encaixar, é "mau" (adjetivo).
"Mal-humorado" é com mal ou mau?
Com "mal", porque o oposto é "bem-humorado" — funciona como advérbio nessa formação.
"O bem e o mal" usa qual dos dois?
"Mal", porque aqui é substantivo (o oposto do bem), não adjetivo.
"Mal" pode significar "assim que"?
Sim: "mal cheguei, o telefone tocou" significa "assim que cheguei".