Add the beef and onions to a soup pot. Cook over medium-high heat until the beef has browned (about 7-10 minutes), breaking the meat up with your spoon as you go along. If there's a lot of excess fat, spoon most of it out.
Stir in the tomato paste, garlic powder, and chili powder. (paprika and minced garlic, if using)
Add in the beef broth and increase the heat to high. Once it starts boiling, add in the macaroni.
Reduce the heat so it's not furiously boiling (a rapid simmer is good). I ended up cooking mine over medium heat. Let it cook uncovered until the pasta is tender and most of the liquid has been absorbed (about 13-15 minutes). I stir it every couple of minutes.
Add in half & half, if using. Stir.
Take the pot off the heat and stir in the cheese. Season with salt & pepper as needed. I let it sit for a couple minutes prior to serving (soaks up the sauce and flavors more), but you can serve it right away.