As you suspected, the correct approach is to start from the end.
First, let's invent a notation for the game positions. Let's view each position from the POV of the player whose turn it is, so that "In,6" means it's your turn to move, you are inside the circle, and there are 6 empty spots between you and the opponent.
Then let's enumerate the positions, starting from the end of the game, to see what kind of a pattern arises.
(Note that with an odd number of empty spaces, the opponent is on the same side of the circle as you, and opposite you otherwise. This means that on rows with even distances, you look for a losing position in the previous 3 lines of the other column, on rows with odd distances you look in the same column.)
In,0: W Out,0: L
In,1: L Out,1: W (1)
In,2: W (2) Out,2: W (1)
In,3: W (2) Out,3: W (3)
In,4: L Out,4; W (3)
In,5: W (1) Out,5: L
In,6: W (1) Out,6: W (2)
In,7: W (3) Out,7: W (2)
In,8: W (3) Out,8: L
In,9: L Out,9: W (1)
In,10: W (2) Out,10: W (1)
In,11: W (2) Out,11; W (3)
In,12: L Out,12: W (3)
(The numbers in the parens are the winning moves, if any exist.)
The pattern repeats after 8 empty spots, which means we can take the original position (Out,15), subtract 8, and look up "Out,7" in the table.
That position is
winning, and the winning move is to move 2