Heat a large dutch oven over medium heat. Add butter and bacon fat and cook until fat is rendered, 8-10 minutes. Add mirepoix and cook until soft, another 8 minutes. Add garlic and stir until fragrant, 1-2 minutes more.
Increase heat to medium high and add ground meat mix and cook until all browned, 10 minutes. Keep heat on high and reduce until most liquid is evaporated, 6-8 minutes. Add red wine and reduce liquid, 8 minutes more.
Add crushed tomatoes and water, 1 cup of half and half, salt, pepper, and cocoa powder. Bring to a boil, then reduce heat to low and simmer, uncovered, for 3-4 hours.
Once a layer of fat has covered the top, turn off heat and skim the fat. This can either be done right away or you can leave in the fridge for a few hours until the fat has solidified. Once fat is skimmed, bring sauce back to a boil and add last cup of half and half, parmesan cheese, and fish sauce. Stir quickly until mixed and emulsified, then reduce for 10-15 minutes more on medium heat.
While sauce is reducing, bring a stockpot of salted water to a boil. Add rigatoni and cook until al dente, 8-10 minutes. Reserve 1/2 cup of the pasta water and strain pasta. Add pasta and reserved water to sauce and combine, then cook 2 minutes more. Can be served immediately or stored in fridge for up to a week.