In a large measuring cup with a spout, combine all the sauce ingredients and set aside. Measure out the remaining ingredients before starting.
Season the ground beef with salt and pepper. Heat a large skillet over medium-high heat and add the ground beef. Cook and crumble the beef for about 3 minutes, then add the onions. Sauté until the beef is cooked through, about 5-6 minutes. Drain any excess grease and set the beef mixture aside on a plate.
Start boiling a pot of water for the pasta. Once the water reaches a boil, add ½ tablespoon of salt.
Meanwhile, melt the butter in the same skillet over medium heat. Add the garlic, flour, and tomato paste, and stir to combine. Cook for 1-2 minutes.
Slowly add the sauce mixture from step 1 in small splashes, stirring continuously. This will help ensure the roux doesn’t break and that the sauce stays thick.
Bring the sauce to a boil, then reduce the heat to a simmer. Let it simmer uncovered while you cook the pasta to al dente, stirring occasionally. Once done, drain the pasta.
Gradually add the cheese to the sauce, stirring constantly. (Optional: set some cheese aside to melt on top at the end.)
Add the cooked ground beef and onions back into the sauce and stir to combine. Then, stir in the macaroni.
If desired, sprinkle with the remaining cheese and cover with a lid to allow it to melt. Serve and enjoy!