The one with the winning strategy is quite surprisingly
>! X

First, let us note that
>! if X starts anywhere else than the center, O wins on their first move like this  
>! <pre> |X   \*|     |\* X  |
>! |     |     |O \*  |
>! |\*   O|     |     |</pre>  

First options
>! When X starts in the center, O has two options, corner, which gives X zero winning moves or middle, which gives X six winning moves  
>! <pre> |O    |     |\* O \*|
>! |  X  |     |\* X \*|
>! |     |     |\*   \*|</pre>  

Case 1
>! If O goes for the corner, X wins like this  
>! <pre> |O    |    |O   X|    |O X X|
>! |  X  | -> |  X  | -> |\* X  |
>! |     |    |O    |    |O \*  |</pre>  

Case 2
>! So O should go for the middle. Then, if X goes anywhere else than one of the more distant corners, O wins immediately like this  
>! <pre> |  O  |     |X O  |     |\* O  |
>! |O X  |     |\* X  |     |X X O|
>! |\* X \*|     |\*   O|     |\*    |</pre>

Case 2.1
>! So X will go for one of the bottom corners. Then the game will end like this  
>! <pre> |  O  |    |  O O|    |\* O O|
>! |  X  | -> |  X  | -> |  X  |
>! |     |    |X    |    |X X \*|</pre>