The first step prior to further operations is to make sure that your DEM is free of depressions.
Otherwise you will get sinks in the middle of watercourses, which will impact contours and stream networks.
Note that in karst (cave) areas you need to be careful as there may be legitimate depressions.
There are a couple of different approaches, and which one you use may depend on the landscape. Fill Sinks is a common approach. However, if you don't need to worry about small lakes, dams etc, then Breach Depressions may be a better option than Fill Sinks, as it deals better with anomalies in the DEM.
There are various related tools in the Processing Toolbox that will do this, including:
- SAGA : Terrain Analysis - Hydrology : Fill Sinks
- SAGA : Terrain Analysis - Hydrology : Fill Sinks (Wang and Liu)
- SAGA : Terrain Analysis - Hydrology : Fill Sinks XXL (Wang and Liu)
The results from all will be similar, but the Wang and Liu versions should be faster.
There are other approaches that deepen channels rather than fill sinks in order to get a hydrologically sound drainage network. For example
- SAGA : Terrain Analysis - Hydrology : Sink Removal
has an option for this.
My preference is to install Whitebox Tools, and the associated QGIS plugin, and to use the BreachDepressions algorithm. Settings will depend again on the landscape, but a Maximum Breach Depth of 15-20m and a Flat Increment Value of 0.00001 have worked well so far.