Prep the aromatics. Finely mince or grate the onion so it blends into the mixture without leaving big chunks.
Mince the garlic. Chop the parsley and mint.
Hydrate the breadcrumbs. In a bowl, combine breadcrumbs and milk. Let sit for 2–3 minutes until the crumbs absorb the liquid and soften.
This keeps the meatballs tender.
Mix the meatball base. Add lamb, onion, garlic, parsley, mint, egg, cumin, coriander, paprika, cinnamon, red pepper flakes, salt, and black pepper to the breadcrumb mixture. Gently mix with your hands until just combined. Do not overwork.
Shape the meatballs. With damp hands, form 18–22 small meatballs (about 1 to 1.5 inches wide).
Place them on a plate or lined tray.
Choose your cooking method. Oven-baked: Heat oven to 425°F (220°C). Brush a sheet pan with olive oil or line with parchment and lightly oil it. Arrange meatballs with space between them, brush tops with a little oil, and bake 12–15 minutes until browned and just cooked through (internal temp around 160°F/71°C).
Pan-seared: Heat 2 tbsp olive oil in a large skillet over medium-high heat.
Add meatballs in batches without crowding. Sear 2–3 minutes per side until browned, then lower heat to medium and cook another 3–5 minutes until done.
Air fryer: Heat to 390°F (200°C). Lightly oil basket.
Cook in a single layer for 8–10 minutes, shaking once, until browned and cooked through.
Rest and serve. Let meatballs rest 3–4 minutes. Serve with a dollop of yogurt or tzatziki, a squeeze of lemon, and your favorite sides.