Den Backofen auf 200°C Ober-/Unterhitze (180°C Umluft) vorheizen. Eine mittelgroße Auflaufform (ca. 20x30 cm) großzügig mit Butter einfetten.
Die Nudeln in einem großen Topf mit reichlich Salzwasser nach Packungsanweisung kochen, aber etwa 2 Minuten kürzer als angegeben, damit sie noch Biss haben (al dente). Anschließend abgießen und gut abtropfen lassen.
Während die Nudeln kochen, die Soße zubereiten. Dafür die Butter in einer tiefen Pfanne oder einem Topf bei mittlerer Hitze schmelzen. Die gehackte Zwiebel darin glasig dünsten, dann den gehackten Knoblauch hinzufügen und eine weitere Minute mitdünsten, bis er duftet.
Das Mehl über die Zwiebel-Knoblauch-Mischung stäuben und mit einem Schneebesen gut verrühren. Die Mischung (Mehlschwitze) unter ständigem Rühren etwa 1-2 Minuten anschwitzen, ohne dass sie Farbe annimmt.
Nach und nach die Milch unter kräftigem Rühren mit dem Schneebesen zugießen, um Klümpchenbildung zu vermeiden. Anschließend die Sahne einrühren. Die Soße unter gelegentlichem Rühren zum Köcheln bringen, bis sie sämig andickt.
Die Pfanne vom Herd nehmen. Die gewürfelten Schinkenstücke und etwa die Hälfte des geriebenen Käses in die Soße einrühren. So lange rühren, bis der Käse vollständig geschmolzen ist. Die Soße kräftig mit Salz, Pfeffer und einer guten Prise frisch geriebener Muskatnuss abschmecken.
Die abgetropften Nudeln zur Schinken-Käse-Soße in die Pfanne geben und alles sorgfältig vermengen, sodass jede Nudel von der köstlichen Soße umhüllt ist.
Die Nudel-Schinken-Mischung gleichmäßig in der vorbereiteten Auflaufform verteilen und glattstreichen. Den restlichen geriebenen Käse gleichmäßig darüber streuen.
Den Auflauf im vorgeheizten Backofen für ca. 20-25 Minuten backen, bis die Oberfläche goldbraun und herrlich blubbernd ist.
Den fertigen Auflauf aus dem Ofen nehmen und vor dem Servieren etwa 5 Minuten ruhen lassen. So kann er sich etwas setzen und lässt sich besser portionieren. Heiß servieren und genießen!