Depending on your project and goals there are a few solutions. Drupal 8 core itself generates very little markup, the field markup is now coming from a theme, and the markup from those base themes is much lighter-weight than D7's core. To get started you may want to review the new theme guide, and MortonDK's session from DrupalCon New Orleans.
Given the control you seem to be seeking, you should probably create a theme that's based on Stable (which is the default if you don't set a base theme). Then enable theme debugging, and as you find templates you don't like the output of, copy them from
core/themes/stable/templates/... into your theme's templates folder. If you explore either stable or classy you'll see a variety of field templates in the field directory, and you can target them on a case-by-case basis in your theme as needed (theme debug will provide you the name suggestions you need to create the properly targeted file).
Some people are copying the entire stable theme so they have all the templates on hand from the start. If you did that you may also want to set the base theme to false so stable is disabled entirely.
You can also use the
hook_preprocess_field() in your theme's
.theme file to make changes before reaching the twig files. If you use the Drupal console to generate your theme, the boilerplate code will come with a large collection of the preprocess functions already defined.