He started his career at Bologna, before moving to Chelsea in 2007. In 2011, Borini joined Championship side Swansea City on loan, and eventually signed for Roma, before moving to Liverpool in 2012. He spent the 2013–14 season on loan at Sunderland, and after a season back at Liverpool he joined Sunderland permanently in August 2015.
Borini made his senior international debut in 2012, and was an unused member of the Italian squad that reached the Euro 2012 final.
Borini first started playing football at the age of nine and was raised supporting the local club Bologna. He joined Bologna in 2001, as a youth player.
Borini joined Chelsea in the summer of 2007 from Bologna. During the 2008–09 season, he was made first choice striker for reserves. He was the top scorer for the reserves with 10 goals from 11 appearances. Borini scored against Manchester United in the FA Youth Cup. On 1 September 2009, he was added to Carlo Ancelotti's Champions League squad and he made the bench against FC Porto. He made the substitutes bench again a few days later on 20 September, replacing Nicolas Anelka in the 89th minute to make his first team debut for Chelsea against Tottenham Hotspur. His full debut came against Queens Park Rangers in the League Cup third round. On 8 December 2009, Borini made his Champions League debut in the 2–2 draw against APOEL. He played his first FA Cup game against Cardiff City in the fifth round, coming on in the 88th minute for Didier Drogba as the Blues won 4–1. Borini underwent a hernia operation which put him out of action for quite some time.
Captain Borini scored five times to bring Chelsea Reserves back from 0–3 against West Bromwich Albion Reserves on 20 October 2010. Chelsea Reserves won the match 5–4.
On 17 March 2011, Borini joined Championship side Swansea City on loan until the end of the 2010–11 season. He linked up with his former Chelsea youth team boss Brendan Rodgers. Borini began his loan spell with the Swans by scoring a brace against Nottingham Forest. On 9 April 2011, he opened the scoring against Norwich City, with a free kick in a match which the Swans went on to win 3–0. He scored again during the Swans 2–1 loss to Burnley at Turf Moor and bagged another brace during the 4–1 defeat of Ipswich Town at the Liberty Stadium.
On 18 May 2011, Borini confirmed that he would not be coming back to Chelsea at the end of his loan spell with Swansea. He insisted he would not make a decision on his future until after the Championship play-off final. In the Championship play-off final, Borini won the penalty which secured a 4–2 lead and a return to English football's top flight for the Swans.
It emerged in the days following the play-off final that Borini had signed a pre-contract agreement with Serie A side Parma, in his home region of Emilia-Romagna, before he had even joined Swansea on loan. According to his agent, Marco De Marchi, Borini has secured a five-year contract with the club. Parma confirmed the deal on 2 July 2011. Parma also paid Chelsea a training compensation of €347,500. Chelsea sued Parma to FIFA Dispute Resolution Chamber, which on 28 August 2012 the chamber ordered Parma to pay €337,500 plus 5% interests counting from 31 August 2011. A scheduled payment was agreed on 18 April 2013.
On 31 August 2011, Borini signed for Italian club Roma on loan for €1.25 million, with an option to buy for €7 million. Borini signed a 1+4 year contract, which he would earn €1 million in gross in first season but increased to €2.3 million in 2012–13 and ultimately €3.4 million in 2015–16. He made his first official appearance for Roma in the 2–1 loss at home to Cagliari, replacing Pablo Osvaldo in the 80th minute. The following week, he made his first start against Internazionale in the 0–0 draw at the San Siro. He scored his first goal with his new team in the 2–1 away loss against Genoa. He then scored his first goal in the Coppa Italia against Fiorentina in Roma's 3–0 victory. Borini scored his second goal as a Roma player against Cesena in Roma's 5–1 victory. Borini was bought from Parma on a co-ownership deal for €2.3 million on 23 January 2012. Moreover, Roma also paid agent Andrea Rosso €150,000 who broke the deal, as well as sent Stefano Okaka to Parma in a temporary deal with the option to sign half of the "card" for €300,000. On 5 February, he scored two goals against Inter in a 4–0 victory. He scored an equaliser in a derby against Lazio, and he scored a winner against Palermo on 12 March. On 23 June, Roma paid Parma €5.3 million on blind auction, and signed the other 50% of Borini's rights.
On 9 July 2012, it was reported that Borini would become Brendan Rodgers' first signing as Liverpool manager, with the player expected to join before a pre-season tour of North America. On 12 July, it was reported that a deal had been reached between the two clubs, and on 13 July Borini officially completed his transfer to Liverpool, and requested to wear the number 29 shirt. On 13 July, Roma announced the fee was €13.3 million including bonuses (equivalent to about £10.5 million). After his move, Borini revealed that Italy teammate Mario Balotelli was responsible for urging him to join Liverpool because Balotelli claimed the club (Liverpool) has the most exciting fans.
On 9 August, Borini scored his first goal for Liverpool during his first game at Anfield, in the second leg of a Europa League match against FC Gomel, in the 21st minute. He made his Premier League debut on 18 August 2012, starting in a 3–0 loss against West Bromwich Albion at The Hawthorns. In October 2012, Liverpool confirmed that Borini would miss the next three months due to a broken foot which he initially suffered in a game against Manchester United. Borini made his comeback for Liverpool on 9 January 2013, replacing Raheem Sterling as a second-half substitute away to Manchester United.
On 17 February 2013, Borini suffered a dislocated shoulder after a collision with Swansea City's Kyle Bartley only eight minutes after being brought on as a substitute for Luis Suarez. Brendan Rodgers' post-match comments suggested that Borini would be out for the remainder of the 2012–13 season. He returned to the team on 27 April 2013, coming off the bench in the 72nd minute to score his first Premier League goal and Liverpool's fifth in a 6–0 away win against Newcastle United. In his first season with Liverpool, he played 20 games, scoring twice.
Borini signed on a season-long loan with Sunderland on 2 September 2013. He made his Sunderland debut in a 1–3 home defeat to Arsenal, coming on as a 71st-minute substitute for Charis Mavrias. He made his full debut in a 3–0 away defeat at West Bromwich Albion, but was subbed off in the 59th-minute for Jozy Altidore in a match that proved to be then manager Paolo Di Canio's last game in charge after he was sacked a day later. Kevin Ball was put in caretaker charge of Sunderland's League Cup tie at home to Peterborough United, Borini was again put on the substitutes bench, but was subbed on 13 minutes from full-time for Emanuele Giaccherini; Sunderland won the match 2–0.
On 27 October 2013, Borini scored his first goal for Sunderland in the Tyne-Wear derby against Newcastle United, providing the winning goal in their 2–1 victory. Borini scored a late equaliser in the League Cup quarter-final against Chelsea, and later assisted Ki Sung-Yeung's extra time winner. On 28 December 2013, Borini was taken hospital after playing the first half of Sunderland's draw with Cardiff City, due to illness, but was released later that day.
On 7 January 2014, Borini scored Sunderland's winning goal from the penalty spot as they beat Manchester United 2–1 at the Stadium of Light in the League Cup semi-final first leg. On 1 February, he scored in Sunderland's 3–0 victory against Newcastle United at St James' Park to give the Black Cats a double over their North East rivals. On 2 March 2014, he scored the opening goal in the 3–1 2014 Football League Cup Final defeat to Manchester City.
On 19 April, Borini scored Sunderland's winning goal in a 2–1 win away at his former club Chelsea to inflict José Mourinho's first ever home league defeat as manager of the club. The result kept his parent club Liverpool two points clear of Chelsea at the top of the Premier League table. In the following days, Borini was named as Sunderland's "Young Player of the Year". Borini scored another penalty on 27 April, which was Sunderland's second goal in a 4–0 home win over Cardiff City, a result which saw them move out of the relegation zone. On 7 May, he scored in a 2–0 win against West Bromwich Albion, to ensure the team would not be relegated from the Premier League.He scored in Sunderland's only goal in a 1–3 defeat to Swansea on the final day of the season.
On 14 May 2014, in his first match since his return from Sunderland, Borini scored in a 4–0 friendly win over Shamrock Rovers at the Aviva Stadium in Dublin. During the pre-season, he was being substituted after 12 minutes of a 1–0 friendly defeat to Roma at Fenway Park on 24 July 2014 following a heavy fall. Rodgers acknowledged that Borini would require treatment, but insisted that the injury was not serious.
It was confirmed that Liverpool accepted a £14 million bid from Sunderland, however he decided against the switch, instead choosing to fight for his place in the Liverpool first team.
On 21 December 2014, Borini was sent off for two yellow cards in a 2–2 draw against Arsenal at Anfield, despite only playing 16 minutes as a substitute. The second was given for a high challenge on Santi Cazorla which tore the Arsenal player's shirt open. He scored his second Premier League goal for Liverpool, against Aston Villa on 17 January 2015, from a cross by Jordan Henderson in a 2–0 win.
On 31 August 2015, Borini joined Sunderland on a four-year deal, for a reported fee of £8 million, potentially rising to £10 million. After struggling for form and fitness, Borini scored his first goal of the season in a 3–1 away defeat to Chelsea.
On 1 March 2016, Borini scored a stoppage time equaliser, as Sunderland salvaged a 2–2 draw at home to Crystal Palace. Manager Sam Allardyce labelled the strike as goal of the season. On 15 April 2016, Borini opened the scoring from the penalty spot in a crucial 0–3 away victory over fellow strugglers Norwich, a result which moved Sunderland within one point of safety. On 7 May 2016, Borini scored in a home match against Chelsea to level the score at 2–2, in a match which Sunderland went on to win 3–2 due to a Jermain Defoe goal 3 minutes later, to move out of the relegation zone. Sunderland's survival was confirmed in a 3–0 victory over Everton later that week.
Borini started Sunderland's first game of the season against Manchester City. On 27 August 2017, he suffered the torn ligament while taking a free-kick in the 1–1 draw with Southampton which he was substituted later. He was out due to the injury for three months. He returned to the starting line-up on 14 December in the 1–0 loss against Chelsea. His first goal of the season was a last minute stunner against Manchester United on 26 December. His second goal of the season was a last minute equaliser against West Ham United. He scored the goal just 2 minutes after coming on tho the field. He finished the season with 2 goals in 26 appearances in all competitions as Sunderland finished bottom of the table and was relegated.
On 30 June 2017, Borini joined Serie A club Milan on loan, with an obligation to buy. On 11 July, he made his debut in friendly match against FC Lugano. He made his official debut for the club in Europa League qualification's 1–0 win against CS U Craiova on 27 July. He scored his first goal for the club in Milan's 6–0 Europa League play off win against Shkëndija on 17 August 2017.
On 13 November 2009, he made his debut with the Italy U-21 squad in a 2–0 loss against Hungary. Borini was named captain of the Italian team for the 2010 UEFA European Under-19 Football Championship. On 29 March 2011, he scored his first goal for the U21 team in a friendly game against Germany.
On 26 February 2012, Borini was called up to the senior national team by head coach Cesare Prandelli. He made his debut on 29 February 2012, in the friendly match against the United States. He was included in the Italian squad for UEFA Euro 2012, but did not come off the bench.
In May 2013 he was included in Italy U-21 squad for European Championships held in Israel. On 15 June 2013 he scored a winning goal in semi-finals of the competition against the Netherlands and a consolation goal in the final against Spain. Following the competition's completion he was announced in UEFA's official team of the tournament.
In May 2016, Borini was named in Italy's preliminary 28-man training squad ahead of Euro 2016.
Regarded as one of the most promising young Italian forwards of his generation, in 2012, Borini was named one of the top players born after 1991 by Don Balón. Borini is a quick, agile, and hardworking striker, with good technique, movement off the ball, and an accurate shot; he is capable of playing in several offensive positions, and he has also been deployed as a winger, or as a supporting striker.As of 28 August 2017.
As of 4 September 2015
Football League Championship play-offs: 2010–11
Football League Cup: Runner-up 2013–14
UEFA European Championship: Runner-up 2012
UEFA European Under-21 Championship: Runner-up 2013
UEFA European Under-21 Championship: Team of the Tournament: 2013