In a medium bowl, sift together the flour, cocoa powder, baking powder, and salt.
In a large mixing bowl or the bowl of a stand mixer, combine the butter and sugar. Beat together on medium speed until well combined, about 1 minute. Add the egg yolks. Beat on medium speed until light and fluffy, about 2 minutes. Scrape down the bowl. Add the sour cream, vinegar, food coloring, and vanilla. Beat until well combined, about 30 more seconds.
Add the flour mixture. Beat on low speed until well combined, scraping down the bowl to make sure everything is incorporated. Scrape the dough down into the bowl, cover, and refrigerate for at least 1 hour or until firm, and up to 1 day.
Fill a large heavy-bottomed pot with 2 inches of oil. Place over medium high heat until a deep-fry thermometer registers 335F. Place a wire rack in a large baking sheet lined with paper towels to drain the excess oil.
While the oil is heating, invert the chilled dough onto a well-floured surface. Dust the dough well with flour. Roll to ½-inch thickness. Using a 3-inch round cutter dipped in flour ( a cup works too), cut circles out of the dough. Cut holes in the center of each circle using a 1 ¼-inch round cutter. Place the donuts and holes on a parchment lined tray.
Carefully place 2 to 3 donuts in the hot oil at a time. Fry for 2 minutes. (They will sink to the bottom at first but should float in about 5 to 10 seconds.) Flip and fry for another 2 minutes. Flip one more time and fry for 30 to 60 seconds until those perfect craggy edges form. Remove the donuts with a spider or slotted spoon. Do the same with the holes, but they’ll only need a minute on each side until they puff up. Make sure to keep an eye on the heat and adjust as necessary to keep the oil between 330F and 340F.