The box-sizing property only applies to elements that accept a width or height. By default, a span element is a non-replaced inline element, which means that the width property doesn't apply to it, thus the box-sizing property doesn't apply to it either.
For reference, here is a relevant link to the specification regarding which elements the box-sizing property applies to:
3. Box Model addition - 3.1. box-sizing property
Applies to: all elements that accept width or height
Here is the relevant quote and link to the specification regarding the width property and non-replaced inline elements:
10.2 Content width: the 'width' property
This property [width] does not apply to non-replaced inline elements. The content width of a non-replaced inline element's boxes is that of the rendered content within them (before any relative offset of children). Recall that inline boxes flow into line boxes. The width of line boxes is given by the their containing block, but may be shorted by the presence of floats.
Therefore, if you change the display property of the span element to inline-block or block, then the element won't appear (as you seem to be expecting):
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
span {
padding-left: 25px;
display: inline-block;
background: #f00;
}
<span></span>