Ha frequentato l'ambiente teatrale come organizzatore, come attore e, infine, come autore; alcune sue opere teatrali sono state rappresentate da varie compagnie italiane. Dal 1974 si è dedicato al genere poliziesco e ha pubblicato numerosi romanzi divenendo uno degli autori italiani più conosciuti e letti.
Da un suo romanzo (Passato, presente e chissà) è stato tratto lo sceneggiato televisivo per Rai Due Sarti Antonio brigadiere andato in onda nell'aprile del 1978. In seguito ha curato il soggetto e la sceneggiatura del film per la TV L'archivista, andato in onda su Rai Uno nel settembre del 1988. Il film porta sul piccolo schermo uno dei suoi personaggi letterari più riusciti: Poli Ugo, interpretato per la TV da Flavio Bucci. Il film presenta una Bologna attuale e viva, ben lontana dalla solita vecchia iconografia, e anticipa drammaticamente le mutazioni successive della città. A fine '87 e primi mesi del 1988 è andata in onda una lettura radiofonica in 13 puntate dei suoi racconti, dal titolo I misteri di Bologna. Nel 1988 Rai Due ha prodotto una serie di 13 telefilm, tratta da suoi romanzi e racconti, i cui esterni sono stati girati interamente a Bologna e dintorni. La serie ha per titolo L'ispettore Sarti - un poliziotto, una città ed è andata in onda su Rai Due a partire dal 12 febbraio 1991 e replicata nel 1993. La serie televisiva di Sarti Antonio è proseguita (sempre su Rai Due) con una coproduzione italo tedesca (Rai-NDR) di sei film di un'ora e trenta, ancora tratta dai suoi romanzi, e andati in onda nell'aprile e maggio del 1994. Il suo personaggio più conosciuto, Sarti Antonio, è entrato anche nel fumetto (Orient Express) con una serie di avventure tratte dai romanzi. I disegni sono di Gianni Materazzo. Numerosi romanzi sono stati tradotti all'estero: Francia, Germania, Portogallo, Spagna, Ungheria, Cecoslovacchia, Unione Sovietica, Giappone, Romania... Nel 1974 ha vinto, con il romanzo Fiori alla memoria, il premio Gran Giallo Città di Cattolica; nel 1980, con il romanzo Sarti Antonio, un diavolo per capello, ha vinto il premio Tedeschi; nel 1992 ha vinto la XIV edizione del Premio di letteratura per l'infanzia con il romanzo Partita con il ladro; nel 1997, con il romanzo Macaronì (scritto assieme a Francesco Guccini), ha vinto il Premio letterario Alassio, un libro per l'Europa, dopo essere stato nella rosa dei finalisti nel Premio Ennio Flaiano e nel Premio città di Ostia.
Lo stesso romanzo ha vinto l'edizione 1998 del Police film festival. Con il romanzo Tango e gli altri (scritto sempre con Francesco Guccini) ha vinto l'edizione 2007 del Premio Scerbanenco (Courmayeur, Mistfest). Ha pubblicato e pubblica con i maggiori editori italiani. Ha collaborato e collabora con quotidiani e periodici. Altri romazi da ricordare sono I sotterranei di Bologna (Mondadori, 2002), Delitti di gente qualunque (Mondadori, 2010), L'ironia della scimmia (Mondadori, 2012) e Sarti Antonio, rapiti si nasce (Einaudi, 2014). Insieme a Francesco Guccini ha scritto per Mondadori la raccolta di racconti Lo spirito e altri briganti (2002), Un disco dei Platters (1998), Questo sangue che impasta la terra (2001), Malastagione (2011) e La pioggia fa sul serio (2014), oltre ai già citati Macaronì e Tango e gli altri. Assieme a Marcello Fois e Carlo Lucarelli ha fondato il "Gruppo 13" e con Renzo Cremante ha fondato e dirige la rivista Delitti di Carta che si occupa esclusivamente di poliziesco italiano. Nel 1987 ha tentato di uccidere Sarti Antonio, sergente. Non c'è riuscito. Nel 1990 ha avuto una quantità di guai con il romanzo Strage, ritirato dalla circolazione per ordine dell'Autorità Giudiziaria. Assolto da ogni accusa, il romanzo sarà ripubblicato da Einaudi solo nel 2010. Nel 2001 Rai Sat Fiction è riuscita a farlo recitare in una serie di sei minidrammi dal titolo Bologna in giallo, rapsodia noir, assieme a Carlo Lucarelli. A causa dello straordinario successo ottenuto dalla coppia, l'esperienza si è ripetuta nel 2002 con 12 minidrammi in Corpi di reato. L'Arma contro il crimine. Nel 2019 per Mondadori pubblica Delitti senza castigo e La bambina del lago. Nel 2020 scrive con Francesco Guccini Che cosa sa Minosse (Giunti) e nel 2023 Vola golondrina (Giunti).