Add all of the meatball ingredients to a large bowl, reserving the oil for frying, and mix until well combined. Gently press the mixture together and roll into ½-inch meatballs.
Heat a large frying pan over medium-high heat and add the oil. Working in batches if needed to avoid overcrowding, add the meatballs and sear on all sides until golden brown, about 1–2 minutes per side.Sammy's tip: the meatballs don’t need to be fully cooked at this stage—this step is just to build flavor. They’ll finish cooking in the crockpot. Once the meatballs are done pan-frying, transfer them to a large baking sheet and place them in the freezer while you prep the remaining ingredients.Sammy's tip: freezing the meatballs briefly helps them firm up so they hold their shape and don’t break apart when added to the crockpot. In the same pan used to fry the meatballs, add the butter, sliced onions, and brown sugar. Cook over low to medium heat for about 15 minutes, stirring frequently.
To your crockpot add your caramelized onions, meatballs, beef stock, tomato paste, thyme and bay leaf. Mix to combine.
Cover and cook on low for 6-8 hours, or on high for 3-4 hours.
During the final 30 minutes of cooking, make the roux by adding the butter and flour to a small saucepan over low heat. Whisk constantly until fully combined and smooth with a buttery texture, about 3 minutes.
Add your roux to the crockpot, mix to combine and cook for an additional 30-40 minutes, or until sauce becomes slightly thickened.
Remove the lid from the crockpot, turn off the heat and let cool for 10-15 minutes to allow the gravy to thicken a bit more.
Serve over mashed potatoes, polenta or along side your favourite veggies.