Prepare the meatballs: place all meatball ingredients in a large bowl and use your hands to mix everything into a cohesive mixture.
Form meatballs into small balls (roughly the size of a ping-pong ball) using your hands. Set aside on a baking sheet.
Cook the meatballs: heat one tablespoon of olive oil and one tablespoon of butter in a large non-stick skillet over medium-high heat. Add meatballs in batches and cook, turning every 1-2 minutes, until meatballs are browned on all four sides. Transfer meatballs to a plate and repeat with remainder of mixture. It’s OK if meatballs are not fully cooked inside - they will continue to cook in the gravy.
Prepare the gravy: sprinkle flour over the remaining browned bits in the non-stick skillet over medium-high heat. Use a wooden spoon to scrape bits around and cook the flour until thick and no longer looks dry - about 1 minute. Add beef broth and pepper and whisk until gravy is smooth and just beginning to simmer.
Return meatballs to gravy pan. Simmer meatballs in gravy, uncovered, for 10 minutes, or until meatballs are completely cooked through and gravy has thickened.
Remove the pan from heat and stir in half-and-half, gently shaking the pan to combine.
Garnish meatballs with chopped fresh parsley and enjoy!
Leftover meatballs will keep in an airtight container in the refrigerator for up to five days.