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.
Cook pasta according to package instructions; drain; set aside.
While pasta is cooking, heat oil and butter in a large skillet over medium-high heat. Add ham, pepper and onion and cook 4-6 minutes, stirring occasionally, until ham is browned and vegetables are tender.
Add garlic and herbs and cook 1-2 minutes longer.
Stir in broth and lemon juice. Bring to a boil. Reduce heat and simmer, uncovered, for 10 to 15 minutes or until liquid is reduced by half.