Préchauffer le four à 200 °C. Beurrer légèrement un plat à gratin.
Laver les épinards frais, retirer les grosses tiges et les faire cuire 2 à 3 minutes dans une grande casserole avec un petit fond d'eau, jusqu'à ce qu'ils soient tombés. Pour les épinards surgelés, les décongeler complètement.
Laisser tiédir les épinards, puis les presser très fortement dans un torchon propre pour éliminer toute l'eau. Les hacher grossièrement au couteau.
Faire fondre le beurre dans une poêle à feu moyen. Ajouter l'échalote finement hachée et faire revenir 3 minutes.
Ajouter l'ail haché et poursuivre la cuisson pendant 1 minute.
Saupoudrer la farine sur les aromates et mélanger pendant 30 secondes.
Verser progressivement la crème liquide en fouettant. Laisser épaissir environ 2 minutes à frémissement.
Ajouter la noix de muscade, le sel, le poivre et la moitié du parmesan râpé. Mélanger jusqu'à obtenir une sauce homogène.
Incorporer les épinards hachés et mélanger pour bien les enrober de sauce. Goûter et rectifier l'assaisonnement.
Verser la préparation dans le plat à gratin et égaliser la surface.
Répartir le cheddar ou le gruyère râpé ainsi que le reste du parmesan sur le dessus.
Enfourner pendant 20 minutes à 200 °C, jusqu'à ce que le fromage soit bien doré et les bords bouillonnants.
Laisser reposer 5 minutes avant de servir.