SegWit doesn't save space, per se.
What it does do is:
From the perspective of a non-upgraded node, it makes transactions seem smaller. The witness part is not recognized or considered by pre-fork nodes, so more of them can fit in a block.
From the perspective of an upgraded node, the block size is calculated differently. Less weight is assigned to witness data than to non-witness data. So for the purpose of the calculation, a SegWit transaction is considered lighter than a non-SegWit transaction. So more of them are allowed per block - but the physical data size of the block increases as a result.
SegWit was to be introduced anyway because it solves malleability etc. But it also offered an opportunity to increase the block size limit (to allow more transactions) without requiring a hard fork, and this opportunity was seized, resulting in the feature described above.
Hello. Thanks for the answer, you write "Less weight is assigned to witness data than to non-witness data", this is kind of confusing, can you elaborate? how is block size calculated? I will update the question to include this. – Alejandro Veintimilla – 2019-07-30T00:12:33.410
1Blocks are no longer limited by size in bytes, rather they are limited by the number of "weight units" which are an arbitrary unit based upon bytes. Each byte of a transaction that is not witness data (so everything that a non-segwit node would see) is worth 4 weight units. Every byte of witness data is worth 1 weight unit. Blocks are limited to 4000000 weight units, which, if full of non-segwit transactions, is 1 MB. – Andrew Chow – 2019-07-30T03:00:49.607