Bootstrap 4 row extends outside of container

The .row in bootstrap is giving a margin right and left of -15px, override it with a in-line style="margin: auto" and you should be fine.

The aside has a default padding left and right of 15, so in your case you should set the padding-left to 0 making the content fit the grid properly.

<section id="page-content">
  <div class="row" style="margin: auto">
    <aside class="col-md-3" style="padding-left: 0">
      <div class="card mt-3">
        <a href="#">
          <img class="card-img-top" src="http://via.placeholder.com/200x200" alt="Card image cap">
          <div class="card-body">
            <p class="card-text">Service</p>
          </div>
        </a>
      </div>

      <div class="card mt-3">
        <a href="#">
          <img class="card-img-top" src="http://via.placeholder.com/200x200" alt="Card image cap">
          <div class="card-body">
            <p class="card-text">Products</p>
          </div>
        </a>
      </div>

      <div class="card mt-3">
        <a href="#">
          <img class="card-img-top" src="http://via.placeholder.com/200x200" alt="Card image cap">
          <div class="card-body">
            <p class="card-text">Parts & accessories</p>
          </div>
        </a>
      </div>
    </aside>

    <article class="main col-md-9 col-sm-12 px-3 mt-3">
      <p>This is the main content area</p>
    </article>
  </div><!--END ROW-->
</section><!--END PAGE CONTENT-->

use the class mr-0 instead of style="margin-right: 0" that's the bootstrap 4 way.


Adding the 'no-gutters' class class='row no-gutters' to your bootstrap 4 rows is also a nice way to get rid of margins and paddings.

The gutters between columns in our predefined grid classes can be removed with .no-gutters. This removes the negative margins from .row and the horizontal padding from all immediate children columns.

https://getbootstrap.com/docs/4.1/layout/grid/#no-gutters