Preheat the oven to 375°F. Bring a large pot of salted water to a boil. Add pasta and cook al dente according to package instructions. Drain and set aside.
Melt the butter in a large saucepan over medium heat. Whisk in the flour until fully incorporated and lightly bubbles, then slowly whisk in the milk. Bring mixture to a boil, then simmer, whisking frequently, until the sauce is smooth and thickened. Remove from heat and stir in the salt and nutmeg.
Add the pasta on top of the bechamel sauce and toss to combine. Transfer the pasta with the sauce to a 9x13 baking dish.
In the pot used to cook the pasta, heat the olive oil on medium-high. Add the ground beef and onions and season with 7 spice, thyme, salt and pepper. Cook the ground beef and onions, breaking up the beef into smaller pieces with the back of a wooden spoon until browned, about 10 minutes.
Add the garlic and cook until fragrant, 1 more minute. Stir in the crushed tomatoes, then transfer the sauce on top of the pasta in the baking dish and spread it into an even layer.
Sprinkle the shredded mozzarella cheese on top and bake in the preheated oven until the cheese is golden and bubbly, 25-30 minutes.