Den Backofen auf 200°C (Ober-/Unterhitze) vorheizen und eine Auflaufform leicht einfetten.
Die Nudeln in einem großen Topf mit reichlich Salzwasser nach Packungsanweisung kochen, aber 2 Minuten früher abgießen, damit sie noch sehr bissfest (al dente) sind. Abgießen und beiseitestellen.
Während die Nudeln kochen, den in Streifen geschnittenen Bacon in einer kalten Pfanne ohne zusätzliches Fett bei mittlerer Hitze langsam knusprig braten. Den fertigen Bacon auf einem mit Küchenpapier ausgelegten Teller abtropfen lassen. Etwa zwei Drittel davon grob zerbröseln, den Rest für die Garnitur aufbewahren.
Für die Käsesauce die Butter in einem mittelgroßen Topf bei mittlerer Hitze schmelzen. Das Mehl hinzufügen und mit einem Schneebesen 1-2 Minuten unter ständigem Rühren anschwitzen, bis eine glatte Mehlschwitze entsteht.
Die Milch langsam und schrittweise unter ständigem Rühren zur Mehlschwitze geben, um Klümpchenbildung zu vermeiden. Die Sauce zum Köcheln bringen und unter gelegentlichem Rühren etwa 5-7 Minuten eindicken lassen, bis sie die Konsistenz von dünnem Pudding hat.
Den Topf vom Herd nehmen. Den geriebenen Cheddar und Gruyère nach und nach unterrühren, bis der Käse vollständig geschmolzen ist und eine glatte, cremige Sauce entstanden ist. Mit Salz, frisch gemahlenem Pfeffer und geräuchertem Paprikapulver kräftig abschmecken.
Die gekochten Nudeln und den zerbröselten Bacon zur Käsesauce geben und alles gut vermischen, bis die Nudeln gleichmäßig bedeckt sind.
Die Nudel-Käse-Mischung in die vorbereitete Auflaufform füllen und glattstreichen. Mit dem restlichen Bacon garnieren.
Im vorgeheizten Ofen für 20-25 Minuten backen, bis die Oberfläche goldbraun ist und die Sauce an den Rändern blubbert. Vor dem Servieren 5 Minuten ruhen lassen.