Ceballos rozpoczął swoją karierę w 2004 – wtedy to w wieku 8 lat trafił do szkółki piłkarskiej Sevilli. W 2009 zrezygnowano jednak z niego z uwagi na powtarzające się problemy z zapaleniem oskrzeli[1]. Później wystrępował on także w CD Utrera, klubie z rodzinnego miasta, a następnie w Realu Betis, który ściągnął go w 2011[2]. 22 lutego 2014, jeszcze jako junior, podpisał z klubem pierwszy profesjonalny kontrakt[3].
26 kwietnia 2014, nie zaliczając wcześniej żadnego występu w drużynie rezerw, Ceballos zadebiutował w pierwszym zespole Betisu. Stało się to podczas przegranego 0:1 spotkania z Realem Sociedad, gdy w 46. minucie zastąpił na boisku Lorenzo Reyesa[4]. Pierwszą bramkę zdobył 21 grudnia, otwierając wynik wygranego 2:0 meczu Segunda División z Racingiem Santander[5]. W sumie w całym sezonie 2014/15 wystąpił on w 33 meczach i pomógł Betisowi w awansie do Primera División[6].
15 października 2015 po długich negocjacjach Ceballos przedłużył swój kontrakt z klubem do czerwca 2020[7]. Pierwszego gola w hiszpańskiej ekstraklasie zdobył 16 kwietnia, ustalając na 2:0 wynik wygranego spotkania z SD Eibar[8].
Real Madryt
14 lipca 2017 Real Madryt potwierdził transfer Ceballosa, który podpisał z klubem sześcioletni kontrakt[9]. Według nieoficjalnych informacji kwota transferu miała wynieść około 18 milonów euro[10]. W nowych barwach zadebiutował 16 sierpnia tego samego roku, zmieniając Toniego Kroosa w 80. minucie wygranego 2:0 meczu rewanżowego Superpucharu Hiszpanii z FC Barceloną[11]. 23 września po raz pierwszy wyszedł w wyjściowym składzie i jednocześnie zdobył swoją pierwszą bramkę podczas wygranego 2:1 meczu z Deportivo Alavés[12].
W sezonie 2017/18 Ceballos zaliczył w sumie cztery występy w Lidze Mistrzów UEFA[13], pomagając klubowi zdobyć trzeci z rzędu i trzynasty w całej historii tytuł mistrzowski[14]. 13 stycznia 2019 po 15 minutach przebywania na boisku, podczas których był wygwizydwany przez kibiców swojego byłego klubu, zdobył bramkę z rzutu wolnego, ustalając w ostatniej minucie wynik spotkania z Betisem na 2:1[15].
Wypożyczenie do Arsenalu
25 lipca 2019 angielski klub Arsenal poinformował o rocznym wypożyczeniu Ceballosa[16], który przejął na koszulce numer 8, wcześniej należący do Aarona Ramseya[17].
Rozgrywane w Polsce młodzieżowe Mistrzostwa Europy Ceballos rozpoczął na ławce rezerwowych, z czasem jednak zaczął grać częściej i pomógł drużynie zająć drugie miejsce. Jednocześnie został wybrany najlepszym zawodnikiem całego turnieju[23].
11 sierpnia 2018 roku Ceballos zadebiutował w seniorskiej reprezentacji Hiszpanii, rozgrywając cały wygrany 6:0 mecz Ligi Narodów UEFA przeciwko Chorwacji[24]. Swojego pierwszego gola w pierwszym zespole narodowym zdobył 15 listopada tego samego roku w przegranym 2:3 spotkaniu z tym samym przeciwnikiem w ramach tych samych rozgrywek[25].
Wraz z drużyną do lat 21 sięgnął w 2019 roku po tytuł Mistrza Europy. Jednocześnie po raz drugi w rzędu został wybrany do najlepszej drużyny całych zawodów[26].