In a medium saucepan, combine water, butter pieces, and salt. Heat over medium-high heat, stirring occasionally, until butter melts and mixture reaches a rolling boil.
Remove from heat immediately. Add all the flour at once. Stir vigorously with a wooden spoon for about 1 minute until mixture forms a thick, smooth dough that pulls away from the sides of the pan.
Add the first egg to the warm dough and stir until completely incorporated (it will look separated at first but will come together). Repeat with the second egg, mixing until dough is smooth and glossy with a thick mashed potato consistency.
Transfer dough to a sturdy piping bag fitted with a large star tip (Wilton 1M or Ateco 845). Mix cinnamon and sugar together in a shallow dish. Line a plate with paper towels.
Pour canola oil into a large, heavy pot to a depth of 2-3 inches. Heat oil slowly over medium heat to 365°F, using a candy thermometer to monitor temperature.
Hold piping bag a few inches above oil surface. Squeeze out a 6-inch length of dough into the hot oil and snip cleanly with kitchen scissors. Fry 3-4 churros at a time, being careful not to crowd the pot.
Fry for about 2 minutes on the first side until golden brown, then flip with tongs or a slotted spoon. Fry for another 2 minutes on the second side until golden all over.
Remove churros and place on paper towel-lined plate to drain for 1-2 minutes. While still warm, roll each churro in the cinnamon sugar mixture until completely coated.
Transfer coated churros to a wire cooling rack. Serve warm with chocolate sauce, caramel, or enjoy plain. Best eaten immediately.