GRAND RAPIDS, Mich. — Fresh off his “Super Saturday” wins in Kansas and Maine, Sen. Ted Cruz (R-Tex.) stormed into western Michigan with a message: The GOP presidential contest had been winnowed down to two candidates, Donald Trump and himself.

Cruz’s stump speech did not mention his rivals until he called for supporters of Ohio Gov. John Kasich and Sen. Marco Rubio (Fla.) to come aboard the only legitimate stop-Trump movement.

“A vote for John Kasich, a vote for Marco Rubio, is effectively a vote for Donald Trump,” Cruz told reporters here.

Polling in Michigan has suggested that Kasich, not Cruz, is surging close to Trump. On March 1, the RealClearPolitics average of polls here pegged Kasich’s support at 12.2 percent and Cruz's support at 15 percent. One week later, Cruz had inched up to 19.8 percent; Kasich had doubled his support to 25 percent, at the expense of a cratering Rubio and with some defections from Trump.

But Cruz, who has struggled in open primaries like Michigan, has a more reliable base than either Trump or Kasich. That was proven in Grand Rapids, where a hastily scheduled rally packed close to 1,000 people into the ballroom of an Italian restaurant complex. This was the part of the state — heavily religious and economically prosperous — where Cruz expected to do very well.

Trump hopes to regain his momentum after splitting four contests on Saturday with Cruz. (Reuters)

There had been no planned Cruz event on Monday. But at 12:42 p.m., it was announced that Cruz would come to Grand Rapids for a final 8:30 p.m. rally. Cruz, whose first plane had broken down, did not take the stage until 11:03 p.m.

Here’s a timeline of that event:

8:03 p.m.: The parking lot of Noto’s Restaurant is already full, less than 30 minutes before Cruz supporters expected to hear their man. Anyone parking far from the venue can follow the Gadsden flag that flaps from a red pickup, past more than one car with a Ben Carson 2016 sticker, and past tables of Cruz merchandise. The ballroom that was hastily set up for Cruz is full, and the Texan’s local endorsers are already on site and on message.

“I’m the most conservative hooker you’ll ever meet,” jokes Tom Hooker, a Cruz-supporting state representative who sports a baby feet lapel pin, a universal pro-life symbol. “Cruz is going to do well here.”

“Cruz was always my second choice,” says Bill Mills, 37, wearing a shirt with the name of Sen. Rand Paul (R-Ky.). “I was thinking about voting for Rand up until yesterday, but if we can stop Trump, we’ve got to unite.”

8:15 p.m.: Word trickles out that Cruz will arrive closer to 10 p.m. There are some groans, blotted out by cheers at the arrival of free elbow pasta with marinara sauce.

8:35 p.m.: In the interest of something starting on time, the crowd sings the national anthem. Some of the adults, the ones not wrangling restless kids, retreat to the well-stocked Noto’s bar and order beers to wash down the pasta.

9:11 p.m.: Cruz’s state director, Wendy Day, kicks off speeches by state legislators, starting with state Sen. Patrick Colbeck. “This campaign stuff can get crazy at times, and we’re finding out quickly that the good things in life are worth waiting for,” he says cheerfully, before telling the entire history so far of Cruz’s primary and caucus wins. “Ted is gaining momentum across the country.”

9:46 p.m.: The speeches continue as reporters are told to expect Cruz closer to 10:30. “A lot of us didn’t think we were speaking today, so we didn’t prepare new stuff,” says state Rep. Joel Johnson. “But it’s good stuff, because we’re talking about our friend Ted.” He alternates between talk of religious liberty and jokes about how the tracker NORAD uses to follow Santa Claus has been redeployed for Cruz.

10:15 p.m.: Back at the bar, a man asks for another Budweiser and is informed that the restaurant has run out. The press is told to expect Cruz closer to 11. Hooker is individually thanking the military veterans in the audience, but the only people who’ve left were toting away children who couldn't sit still anymore.

10:41 p.m.: For two hours, some reporters and cameramen had been waiting in a dining room/wine cellar below the main ballroom for a press availability with Cruz. They’re told that the press availability has been pushed back, to after the speech, and they scramble upstairs to see Rep. Justin Amash (R-Mich.) stall by holding an impromptu town hall meeting. One voter asks if the death penalty can be repealed, and if petty crimes, like drug possession, should be punished with “lashings” instead of jail time.

“So, the question is about the death penalty and lashings,” says Amash. “I don’t think we should do lashings. I do think we should be very careful about sentencing people to death.”

11:03 p.m.: Cruz arrives at last, and bounds onstage to relieve Amash.

“God bless the great state of Michigan,” says Cruz, apologizing for being “stuck on a runway for two hours."

“We forgive you!” yells one voter.

“Let me say for the news media: This is effectively a rally in the middle of the night,” Cruz says. “And let me point out also, to all the kids here: There’s a lesson. Politics can be a really good excuse to keep you up past your bedtime.”

11:32 p.m.: Cruz’s speech concludes, and he plunges into the crowd to shake hands, the sound system playing a new addition to the playlist — “Seasons of Love,” the theme from the musical “Rent.”

11:48 p.m.: As promised, Cruz meets the media for a press conference. With no evidence of grogginess, or the illness that initially had him keeping Monday’s schedule empty, he calls Michigan — where unemployment has tumbled from a summer 2009 high of 14.9 percent to the current rate of 5.4 percent — the sort of place where the job-killing Obama agenda has been deeply felt. He runs through questions on whether he would challenge Trump at the convention even if he was trailing him in delegates, and whether he’s actually committed to Florida.

“If other campaigns want to throw rocks and insults and spurious allegations, knock themselves out,” he says, dodging that question.

11:58 p.m.: Cruz finishes the news conference and walks over to talk to local organizers.

“Senator Cruz, a question on Flint?” asks Levi Bickert, a local reporter.

At first, Cruz doesn’t seem to hear the question. Then he spins around on his heel. “You know, I will answer that,” he says. “Ask the question.”

“We need leadership not only to correct this problem but to ensure it never happens again,” Cruz says. “If I am elected president, you will see federal regulators returning to their core responsibilities.”

“Happy primary day,” says reporter Walter Shapiro. “It’s midnight!”

Cruz smiles and heads off; a less-dysfunctional plane is waiting to take him to North Carolina.