c3 allows the knight b3, so I do not think it is an optimal line.
18 Nf3 is a little better simply because you rooted a knight deep in his territory. Deep knights reduce your opponent's mobility from fear of forks, captures, or having to guard pawns, etc. Here, for example, his rook is bothered to guard a pawn now and his bishop is under attack. These are future possible moves that may soon help you a lot, so your overall positional score is a little better.
What you did was fine however. The difference is tiny, and the trades improved your situation somewhat, giving an open file for the queen, taking away his strong bishop.
19 b3 seems right, followed by Rc1 or c4 (depends on what he does, if he attacks rook with knight, Rc1 seems useful and later I think you may even find a way to trap the knight). If he retreats c4 seems good. Re1 later seems to be a future idea.
There was no reason to resign; in fact I think you can win his knight with some creativity. Rc1, Qb2, Nc4, and the knight will be yours if I am not mistaken??
This is my first time to post here ... so please execuse my mistakes ... and thanks in advance .