Render node content in page.html.twig level or blocks at node.html.twig level
So one thing is directly accessing the node object that you have available. E.g. {{ node.some_field.value }} (which prints the raw value of e.g. a text field, not what you want in most cases) or {{ node.some_field.view() }} (which views it using the default formatter configuration, you can also provide a view mode or formatter configuration to it).

See also the two related questions that I already added as a comment:  Render a node field inside page.html.twig AND Render image field from node in page.html.twig.

As you found out yourself, you can also use blocks for this. However, using views for that is a bit backwards. Views executes a query. So what it does is get the node from the already loaded ID, then does a query to get the node ID and then gets the node again for that Node ID ;)

As an alternative, blocks in D8 support context. So they can get things from the site injected and use it directly. See https://drupal.stackexchange.com/a/188629/31 for some explanation on this. You can implement a custom block yourself and print out what you want, or you can use the block that ctools provides that allows you to view a node with a specific view mode.