The fourth-seeded Croatian got the better of Sousa in a three-hour slog to set up a quarter-final tie with France's Pierre-Hugues Herbert.
Herbert fought back to beat Ukrainian Sergiy Stakhovsky 2-6, 7-6 (7/2), 6-4 and reach the quarter-finals earlier on Wednesday.
"This is my first time in Halle, so I am very happy," said Herbert.
Local hero Jan-Lennard Struff went down fighting against third seed Karen Khachanov in his first ever second-round appearance in Halle.
Russian Khachanov prevailed over a hard-fought three sets to beat Struff 6-3, 3-6, 6-4 and book his place in the last eight.
"I won't dwell on this defeat. I've never started the grass season this well," said Struff, who reached the semi-finals in Stuttgart last week.
Belgium's David Goffin came from behind to beat Moldovan Radu Albot 4-6, 6-4, 6-3 and set up a potential quarter-final clash with home favourite Alexander Zverev.
World number five Zverev had his second round game against Steve Johnson pushed back to Thursday as he attempts to recover from a minor knee injury.
The German slipped and hurt himself during his first-round win over Robin Haase on Monday, and pulled out of the doubles draw a day later.
First seed Roger Federer is also in action on Thursday, as he takes on Jo-Wilfried Tsonga in the second round.
Results from the ATP tournament in Halle on Wednesday (x denotes seeding):
Borna Coric (CRO x4) bt Joao Sousa (POR) 7-6 (7/4), 5-7, 7-6 (7/4)
Pierre-Hugues Herbert (FRA) bt Sergiy Stakhovsky (UKR) 2-6, 7-6 (7/2), 6-4
Karen Khachanov (RUS x3) bt Jan-Lennard Struff (GER) 6-3, 3-6, 6-4
David Goffin (BEL) bt Radu Albot (MDA) 4-6, 6-4, 6-3