Make the béchamel: In a large pot set over medium heat, melt the butter. Add the flour and cook, whisking frequently, until golden and frothy, 2–3 minutes. While whisking, slowly add the milk and bring to a boil. Turn the heat to medium-low and simmer, whisking frequently, until thickened, 10–12 minutes. Stir in 2 teaspoons of salt and the nutmeg, then scrape into a bowl and cover the surface with plastic wrap. Set aside to cool. (Alternatively, refrigerate for up to 48 hours.) Wash and dry the pot and return it to the stove.
Make the meat sauce: To the empty pot, add 1 tablespoon of the oil and turn the heat to high. When it’s hot and shimmering, add the ground beef and use a spatula to press into a single layer. Cook undisturbed until browned on the bottom, 1–2 minutes. Add the tomato paste, cumin, oregano, garlic powder, onion powder, and black pepper and cook, stirring continuously to break up the meat, until the tomato paste begins to brown, 2–3 minutes. Add the tomatoes, 2 cups of water, and 1 tablespoon of salt and bring to a boil, scraping the bottom of the pot. Turn the heat to low and simmer, stirring occasionally, until nearly all the liquid has evaporated, about 1 hour. (The sauce will keep, refrigerated, for up to 4 days.)
Fill a large pot with generously salted water and bring to a boil. Add the lasagna noodles and cook until al dente, according to the package instructions. Drain, then return them to the pot. Add the remaining teaspoon of oil and toss to coat.
Position a rack in the center of the oven and preheat to 375ºF. On the bottom of a 9-by-13-inch baking dish, spread 2 tablespoons of the meat sauce. Lay enough lasagna noodles to make a single layer, then spread evenly with one-third of the meat sauce, followed by one-third of the béchamel. Sprinkle with one-third of the basil, then top with one-third of the ham (in one thin layer). Add another layer of lasagna noodles, followed by another third of the meat sauce, all of the fresh mozzarella, another third of the basil, and another third of the ham. Top with another layer of pasta, the remaining meat sauce, another third of the béchamel, the remaining basil, and the remaining ham. Add another layer of pasta, then spread evenly with the remaining béchamel and sprinkle with the parmesan.
Place the pan on a foil-lined rimmed baking sheet and bake until the edges begin to brown, 35–40 minutes. Turn the heat to 500ºF and cook until browned all over, 10–15 minutes more. Cool for at least 20 minutes before serving.