Ben Roethlisberger threw two touchdown passes to tight end Jesse James as the Pittsburgh Steelers, with minimal help from Le’Veon Bell, opened the season by holding off the Cleveland Browns 21-18 on Sunday.

Roethlisberger improved to 21-2 in his career against the Browns, who gave their rivals all they could handle — a positive sign for coach Hue Jackson and Cleveland fans after a horrid 1-15 season.

But the Browns couldn’t stop Pro Bowl wide receiver Antonio Brown, who made a leaping catch in traffic for 38 yards with 2:26 left to seal Pittsburgh’s win. Brown finished with 11 receptions for 182 yards.

Browns rookie quarterback DeShone Kizer had pulled the Browns within three on a 3-yard TD pass to Corey Coleman followed by a 2-point conversion.

With Pittsburgh needing a big play, Brown delivered one — as usual.

Roethlisberger lobbed his deep pass near Pittsburgh’s sideline toward Brown, who went up over Browns defensive back Jason McCourty and hauled in the game’s biggest catch. Jackson challenged the call, but it held up after a video review and the Steelers improved to 32-6 against the Browns since 1999.

Roethlisberger passed for 263 yards.

The Browns have lost 13 straight openers. Cleveland’s defense played well despite not having top overall pick Myles Garrett, who injured his ankle earlier this week.

Bell, who skipped training camp in a contract dispute, ran tentatively and gained just 32 yards on 10 carries. He rejoined his teammates last week and signed his $12.1 million franchise tag, far less than he feels he deserves.

The Steelers scored their first TD on a blocked punt and sacked Kizer seven times. Two of the sacks were by rookie T.J. Watt, the younger brother of Houston star J.J. Watt, who also had an interception in a memorable debut.

Kizer had some nice moments, and a few where his inexperience showed. He finished 20 of 30 for 222 yards, but was guilty of holding onto the ball too long and put himself at risk with a few runs.

His biggest mistake, though, came in the third quarter when he misread coverage and threw to an area where Watt was waiting.

The Steelers had taken a 21-10 lead on Roethlisberger’s second TD strike to James in the third quarter.

Kizer, the 27th different quarterback to start for Cleveland since 1999, scored his first career TD on a 1-yard sneak with 22 seconds left in the first quarter to tie it 7-all.

Pittsburgh caught a lucky break on the way to taking a 14-7 lead late in the first half.

On second down at his 11, Roethlisberger fired a pass over the middle that was tipped by linebacker Joe Schoebert and deflected directly to Brown, who caught it and zig-zagged his way for 50 yards. A few plays later, Roethlisberger threaded his TD pass to James.

The half ended with Joe Haden, recently cut by the Browns after seven seasons before signing with the Steelers, sacking Kizer.

UP NEXT:

Steelers: Host Minnesota on Sunday.

Browns: Travel to Baltimore Sunday.