Urodzony 1 lipca 1995 w Dzierżoniowie. Swoją piłkarską karierę rozpoczynał w Niemczance Niemcza. Następnie przeniósł się do UKS Lechii Dzierżoniów (2006–2011) i Lechii Dzierżoniów. Przez siedem lat w barwach zółto-czerwono-niebieskich rozwijał swoje umiejętności po okiem trenera Jacka Bieleckiego. W wieku 17 lat zadebiutował w III lidze, by niebawem w 2013 roku przenieść się wraz z Jarkiem Jachem do Zagłębia Lubin.
Początkowo występował w rezerwach klubu, jednak na krótko po zmianie trenera pierwszego zespołu z Oresta Lenczyka na Piotra Stokowca Piątek zaczął trenować z pierwszą drużyną. 14 maja 2014 zaliczył debiut w Ekstraklasie. Następny sezon z Zagłębiem rozpoczynał już w I lidze. Pierwszą bramkę w profesjonalnej karierze strzelił 12 września 2014 w meczu przeciwko Chrobremu Głogów, a pierwszy dublet zanotował 31 października przeciwko Widzewowi Łódź. Łącznie w sezonie 2014/15, Piątek rozegrał 30 spotkań ligowych i trafiał do bramki rywali 8 razy, pomagając przy tym swojemu zespołowi uzyskać awans do Ekstraklasy. Pierwszy gol na najwyższym szczeblu rozgrywkowym strzelił 14 sierpnia 2015 przeciwko Lechowi Poznań. W dalszej części rozgrywek pokonywał bramkarza jeszcze pięć kolejnych razy, czym przysłużył się w zdobyciu przez Miedziowych brązowego medalu oraz awansu do europejskich pucharów. Kolejny sezon rozpoczął z Zagłębiem od wysokiego zwycięstwa 4–0 nad Koroną Kielce, w którym strzelił bramkę, a także od wyeliminowania z rozgrywek Ligi Europy zespołów Sławii Sofia i Partizana Belgrad. Łącznie rozegrał dla dolnośląskiego klubu 85 spotkań, w których trafiał 18 razy.
W sierpniu 2016 został sprzedany za kwotę 500 tys. euro do Cracovii, z którą podpisał czteroletni kontrakt. W drużynie Pasów pierwszy mecz rozegrał 8 września 2016 przeciwko Lechii Gdańsk, wchodząc na boisko w 71. minucie. Łącznie dla krakowskiego zespołu rozegrał 65 spotkań.
Na początku czerwca 2018 przeszedł za kwotę 4 mln euro do włoskiego klubu Genoa CFC, występującej we włoskiej Serie A. W debiutanckim sparingu przeciwko Val Stubai zdobył pięć bramek i zaliczył asystę, natomiast w pierwszym meczu Pucharu Włoch trafił do bramki czterokrotnie, wygrywając tym samym spotkanie 1/32 finału z Lecce. 23 września 2018 stał się pierwszym po Szewczence piłkarzem, który strzelił pięć bramek w pierwszych czterech meczach Serie A.
23 stycznia 2019 został zawodnikiem A.C. Milan, wiążąc się kontraktem ważnym do 30 czerwca 2023. W wyniku tego transferu opiewającego na 35 mln euro został najdroższym polskim zawodnikiem w historii.
26 stycznia zadebiutował w barwach A.C. Milan w ligowym spotkaniu przeciwko SSC Napoli, wchodząc na boisko w 72. minucie meczu za Patricka Coutrone. Trzy dni później po raz pierwszy wystąpił w pierwszym składzie A.C. Milan w ćwierćfinale Pucharu Włoch przeciwko SSC Napoli, zdobywając dwie bramki, które przesądziły o wyniku spotkania (2:0). W sezonie 2018/2019 został królem strzelców Pucharu Włoch zdobywając 8 bramek w 5 meczach tych rozgrywek.
Swoją “cieszynkę” okazywaną po strzeleniu goli, a polegającą na skrzyżowaniu rąk i udawaniu oddawania strzałów z rewolwerów, opatentował. Od tego zachowania przylgnął do niego pseudonim “Il Pistolero”.
30 stycznia 2020 przeszedł do niemieckiego klubu Hertha BSC, umowa do 30 czerwca 2020; kwota odstępnego 27 mln euro. W klubie zadebiutował 31 stycznia 2020, wchodząc w 63. minucie za Mariusa Wolfa w zremisowanym meczu 0:0 z Schalke.
Kariera reprezentacyjna
Pierwszy występ w barwach narodowych zanotował w reprezentacji Polski U-20 w czerwcu 2015 podczas meczu towarzyskiego ze Słowacją. Cztery miesiące później zadebiutował w reprezentacji Polski U-21, zdobywając gola w 53. minucie w sparingu z młodzieżową reprezentacją Izraela.
W czerwcu 2017 otrzymał powołanie od selekcjonera Marcina Dorny na Mistrzostwa Europy U-21. Podczas turnieju wystąpił we wszystkich trzech meczach fazy grupowej, jednak jego zespół nie uzyskał awansu do fazy pucharowej.
W maju 2018 znalazł się w szerokiej kadrze seniorskiej reprezentacji na Mistrzostwa Świata 2018 w Rosji, jednak ostatecznie na sam turniej nie otrzymał powołania od selekcjonera Adama Nawałki. Swój debiut w narodowych barwach zaliczył we wrześniu 2018 w meczu towarzyskim z Irlandią, grając na boisku przez 61 minut. 11 października 2018 zdobył swojego pierwszego gola dla reprezentacji Polski w przegranym meczu Ligi Narodów z Portugalią (2:3]. Na początku eliminacji w meczach z Austrią (1:0), Macedonią Północną (1:0) oraz Izraelem (4:0) i (2:1) strzelił po jednym golu.