Heat 2 tablespoons oil in a large skillet over high heat. Add beef, onion, and garlic; cook and stir until meat is browned on all sides and onion is translucent, 6 to 8 minutes. Add tomatoes, cinnamon stick, bay leaves, rosemary, pepper, and salt. Cook over medium heat, stirring occasionally, for about 3 minutes. Stir in wine and vinegar.
Pour beef mixture into a slow cooker and stir in ketchup. Cover and cook on Low until beef is tender, 6 to 8 hours.
Meanwhile, heat remaining 1 tablespoon oil in a skillet. Add shallots and sauté until soft, 3 to 4 minutes. Add cooked shallots to stew for the last 1 to 2 hours of cooking.
Remove and discard cinnamon stick, bay leaves, and rosemary sprig before serving.