Bring a medium pot of lightly salted water to boil. Add pasta and cook according to package directions, but remove from heat and drain when pasta is becoming al dente and just short of finished. (Pasta will finish in oven.)
While pasta is boiling, fry bacon and onion together in oven-safe skillet. Fry until onion is translucent and bacon reaches desired level of doneness. Set bacon-onion mixture aside and remove excess grease, leaving some to coat the skillet.
Prepare the cheese sauce by melting butter in a saucepan over medium-low heat. Gradually add milk and flour, stirring occasionally so that the mixture doesn't burn. Slowly add grated cheddar and Parmesan while stirring.
Mix together pasta, bacon, onion and cheese mixture and add to skillet. Top with bread crumbs. Cook in oven for approximately 30 minutes.