First Python program: Tic-Tac-Toe
The function check_winner() does not need global move_count.  Using global is code smell, avoid if at all possible, which tends to be always.  But in this case it is completely unnecessary, as move_count, like board, is already accessible in check_winner().

winning_list is constructed every time check_winner() is called.  It does not persist from one call to the next, so new_list = winning_list and the comment immediately above it should be removed.



The statement move = int(input(...)) can crash if the user enters invalid input.  Even if a valid integer is given, the integer could be outside the valid range, like 42, which will cause when board[move] is evaluated.  Place user input in a try ... except statement, inside a loop, and don’t let the program continue until valid input has been given.



You have a game loop that handles two turns (a move by both players) each pass through the loop.  While this does work, it will paint you into a corner in subsequent programs.  3 or more players is going to make writing the game loop much harder.

It is usually simpler to handle one turn (a move by only one player), in each pass through the loop.  At the end of the loop, the “current player” is incremented, wrapping around to the first player when necessary.  With only 2 players, this alternates between them.  More advanced games may require skipping player when a “lose a turn” move is made.  Other games may even reverse the direction of play mid game.  All of these would be horrible to try to write the game loop for if each pass through the loop tried to handle all player moves in one pass.



When the game loop is change to handle only a single move at each pass, it is much easier to handle the “game over” condition.  A while game_is_running loop is all that is required.  Or, for tic-tac-toe, you could use:

for move_count in range(9):
    # moves made here
    # break if someone wins
else:
    print("You Tied")


The else: clause of a for loop only executes if the loop finishes without executing break, so after 9 moves with no winner, it is a tie game.

Using sys.exit() to stop the interpreter on a “game over” condition is a bad idea.  It works here, but it makes test code impossible to write, because the program can kill the interpreter, and the test code can’t stop that.